Process killer

5/5 (19 avis)

Snippet vu 16 072 fois - Téléchargée 67 fois

Contenu du snippet

C'est à la mode de jouer avec les <FONT COLOR=#0000BB FACE=Arial>process</FONT>, alors pkoi pas.. c't'app permet de lister les <FONT COLOR=#0000BB FACE=Arial>process</FONT> en cours d'exécution et de tuer celui que vous voulez ( de façon sauvage ) en leur envoyant un signal de fin d'exécution de manière <U>verticale et en avant</U>.

Nécessite une Form, un Label et une ListBox

Source / Exemple :


Private Declare Function RecupLaFenetre Lib "user32" Alias "GetWindow" _
                        (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function RecupLePidDuPapa Lib "user32" Alias "GetParent" _
                                              (ByVal hwnd As Long) As Long
Private Declare Function RecupLaLongueurDeLeTexte Lib "user32" Alias _
                   "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function RecupLeTexte Lib "user32" Alias "GetWindowTextA" _
  (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function ModifLeTexte Lib "user32" Alias "SetWindowTextA" _
                     (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
   (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessageA Lib "user32" (ByVal hwnd As Integer, _
      ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long

Const WANNAKILL = &H10

Private Sub Form_Load()
 Call InitBg
 Call LoadTaskList
End Sub

Private Sub List1_DblClick()
 Call KillThisApp(List1.List(List1.ListIndex))
 List1.RemoveItem List1.ListIndex
End Sub

Sub InitBg()
 List1.Top = 280: List1.Left = 0: List1.Appearance = 0
 List1.Width = 3000: List1.Height = 2400: List1.BackColor = &H80000018
 Label1.FontName = "Arial": Label1.FontUnderline = True: Label1.Width = 4000
 Label1.Top = 30: Label1.Left = 300: Label1.Caption = "Double click pour tuer le process"
 Me.Width = 3100: Me.Height = 3060
 Me.Caption = "Mémère Killer"
 Me.Top = Int((Screen.Height - Me.Height) / 2)
 Me.Left = Int((Screen.Width - Me.Width) / 2)
End Sub

Sub LoadTaskList()
 Dim CurrWnd As Long
 Dim LongueurDeLeNom As Long
 Dim TaskName As String
 Dim Parent As Long

 CurrWnd = RecupLaFenetre(Form1.hwnd, 0)
 gIndex = 0
 While CurrWnd <> 0
  Parent = RecupLePidDuPapa(CurrWnd)
  LongueurDeLeNom = RecupLaLongueurDeLeTexte(CurrWnd)
  TaskName = Space$(LongueurDeLeNom + 1)
  Length = RecupLeTexte(CurrWnd, TaskName, LongueurDeLeNom + 1)
  TaskName = Left$(TaskName, Len(TaskName) - 1)
  If Length > 0 And gIndex < 200 Then
   If TaskName <> Me.Caption Then List1.AddItem TaskName
   gIndex = gIndex + 1
  End If
  CurrWnd = RecupLaFenetre(CurrWnd, 2)
  DoEvents
 Wend
End Sub

Private Sub KillThisApp(LeProcess)
 SendMessageA FindWindow(vbNullString, LeProcess), WANNAKILL, 0, 0
End Sub

Conclusion :


<CENTER><IMG SRC='http://manipulator.free.fr/captures/killer.jpg' WIDTH=305 HEIGHT=288></CENTER>

<U>Remarquez</U> que si le process est déja en vrac, vous avez une chance sur deux de l'arrêter alors qu'en passant par Ctrl+Alt+Suppr, vos chances sont limitées.

A voir également

Ajouter un commentaire Commentaires
minibenji Messages postés 64 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 24 novembre 2010
11 janv. 2009 à 06:45
ok, mais moi sa me donne un erreur au "As Any" de la ligne 14
cs_lionel4 Messages postés 129 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 26 septembre 2008
3 févr. 2004 à 13:38
Merveilleux 10/10 Enfin une source qui permet de fermer msn efficacement.
crocohinos Messages postés 7 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 30 mai 2006
4 déc. 2003 à 17:37
Salut,

C’est un très bon code. Je l'ai utilisé et un peu remanié pour mes besoins, mais j'ai un chti soucis et je voulais savoir si tu pouvais m'éclairer ?
Voila,
J’ai un programme (le moniteur) qui lance des programmes de création de document. Ces programmes utilisent Word comme moteur d'édition. J'ai imposé un temps maximum au delà duquel je considère qu'il y a un problème de composition de document. Si on dépasse le temps max on ferme tout les programmes lancé par "le moniteur". Oui mais voila quand Word fait de la fusion, il demande une confirmation à l'aide d'une fenêtre modal et là bang ! C’est planté !
Y a t-il une option un paramètre dans le SendMessagA pour palier a ce problème ?
Merci
A++
cs_gildev Messages postés 30 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 29 août 2010
6 août 2003 à 17:58
Alors là, chapeau!
Ton source est brillant!
Je te met 9/10 car tu perds un point pour le source manquant.
Sinon tu as gravement assuré.

Continue comme ça.
carabidule Messages postés 13 Date d'inscription samedi 10 août 2002 Statut Membre Dernière intervention 7 janvier 2004
13 juin 2003 à 14:53
J'aime bien se prog on voit plus que dans le "gestionnaire des taches" :)
Afficher les 19 commentaires

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.