Process killer

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 934 fois - Téléchargée 65 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
Messages postés
64
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
24 novembre 2010

ok, mais moi sa me donne un erreur au "As Any" de la ligne 14
Messages postés
129
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
26 septembre 2008

Merveilleux 10/10 Enfin une source qui permet de fermer msn efficacement.
Messages postés
7
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
30 mai 2006

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++
Messages postés
30
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
29 août 2010

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.
Messages postés
13
Date d'inscription
samedi 10 août 2002
Statut
Membre
Dernière intervention
7 janvier 2004

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.