Ce code permet d'obtenir la liste de ce que Windows considère comme une tâche et qu'il affiche dans l'onglet Application du gestionnaire des tâches et dans Alt-Tab.
Il permet aussi de savoir si une application est bloquée par une api non documentée IsHungAppWindow. Les icônes sont représentées.
La liste des tâches comprend toutes les fenêtres de premier plan qui répondent à certains critères comme n'avoir ni parent, ni propriétaire, être visible (IsWindowVisible) et ne pas être le Progman...
Ce code affiche aussi la liste des processus pour comparaison.
Conclusion :
Ce code se base sur les critères trouvés à la page suivante :
http://upc.pkmn.co.uk/win32/task.shtml et
http://upc.pkmn.co.uk/win32/nonresp.shtml
N'hésitez pas à commenter et à noter...
18 sept. 2007 à 19:24
ah, oui, biensûr...je pensais que tu parlais de VB6...c'est vrai qu'en .Net, tout est plus simple...
ShareVB
18 sept. 2007 à 10:50
Dim myProcesses() As Process
myProcesses = Process.GetProcessesByName("blabla")
If myProcesses(0).Responding Then
Console.WriteLine("Status: Responding to user interface")
Else
Console.WriteLine("Status: Not Responding")
myProcesses(0).CloseMainWindow()
'Si il n'est pas déjà lancé on le lance donc manuellement
myProcesses(0).StartInfo.FileName = "C:\blabla.exe"
'Définition du style de la fenêtre (maximisé, minimisé, normal, caché)
myProcesses(0).StartInfo.WindowStyle = ProcessWindowStyle.Normal
'Démarrage du process
myProcesses(0).Start()
End If
nan?
17 sept. 2007 à 22:57
pour faire, ca il te faut :
-> récupérer le ProcessID du processus dont tu connais le nom (voir les fonctions de ce code)
-> parcourir la liste des fenêtres ouvertes avec GetWindow ou EnumWindows
-> pour chaque hwnd récupéré, utiliser GetWindowThreadProcessId pour avoir le ProcessID de la fenêtre hwnd
-> si ca match, alors tu testes avec IsHungMachinTruc présent dans cette source
-> si isHung, alors terminateprocess et puis create process pour le restarter
un peu dans ce genre là : http://vbnet.mvps.org/index.html?code/system/shellhwnd.htm
ShareVB
17 sept. 2007 à 17:12
je cherche un truc en rapport avec les processus
je voudrais detecter quand un process est planté style "ne reponds pas"
comment le savoir? quand on connait que le nom du processus?
ensuite le tuer definitivement puis relancer...
merci de m'aider si tu peux ;-)
1 sept. 2006 à 12:07
J'ai cru que quelqu'un s'était approprié ton code, mais je n'avais pas vu que ce quelqu'un était toi !
Encore désolé !
lol
@+
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.