Terminer un processus du système

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 268 fois - Téléchargée 32 fois

Contenu du snippet

Avec ce code vous pouvez terminer tout programme qui ne s'exécute pas en tant que service ; le programme parcourt tous les processus (en .exe) dans le système (l'équivalant du CTRL+ALT+DEL), choisit le programme que vous voulez et le quitte.

Ceci est une portion de code ; je l'ai écrit pour quitter Babylon avant de lancer Half-Life (pour ne pas que la fenetre flottante s'affiche n'importe quand).

Source / Exemple :


Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 260
End Type

'Déclarations d'API
Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long
Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function TerminateProcess Lib "Kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Sub Form_Load()
Dim Processus As PROCESSENTRY32
Capture = CreateToolhelp32Snapshot(2, 0)
'Capture permete de parcourir la liste des processus du système
Processus.dwSize = Len(Processus)

courant = Process32First(Capture, Processus)
Do While courant
If Left$(Processus.szExeFile, IIf(InStr(1, Processus.szExeFile, Chr$(0)) > 0, InStr(1, Processus.szExeFile, Chr$(0)) - 1, 0)) = "Babylon.exe" Then
'Si "Babylon.exe" est trouvé dans les processus du système, le parcours des processus s'arrete là
courant = False
Else
'Processus suivant
courant = Process32Next(Capture, Processus)
End If
Loop

CloseHandle Capture

'Si "Babylon.exe" a été trouvé, courant=False puisqu'on a manuellement définit cette valeur pour arreter la boucle ; dans ce cas, TypeName(courant)="Boolean"
'Si "Babylon.exe" n'a pas été trouvé, la boucle est allée jusqu'au dernier processus du système ; dans ce cas, TypeName(courant)="Long" car courant=0

If TypeName(courant) = "Boolean" Then
Identifiant = OpenProcess(1, 0, Processus.th32ProcessID)
TerminateProcess Identifiant, 0
CloseHandle Identifiant
End If

Unload Me
End Sub

Conclusion :


Ce code est pour vous donner une idée ; à son lancement, il fermera le processus "Babylon.exe".

A voir également

Ajouter un commentaire Commentaires
cs_DAHOKHAN Messages postés 20 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 12 décembre 2005
8 déc. 2005 à 14:51
salut houzefa comme je te l'ai envoyer en message priver j'aime ton code je le comprend mais il ne marche pas chez moi!
est ce que tu peu m'aider svp thk!
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
6 juil. 2004 à 18:08
le shell est uniquement pour un processus qu'a une fenetre ouverte, et qu'une instance ; un processus réduit en icone près de l'horloge shell ne marcherai pas. avec les api c mieux.
cs_Houzefa Messages postés 453 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 9 juillet 2004 2
3 juil. 2004 à 12:42
oui je l'ai essayé sur win xp. j'ai aussi essayé directement en tapant la commande dans Démarrer > Exécuter.
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
2 juil. 2004 à 19:51
oh zut.
et tu as windows XP ?
cs_Houzefa Messages postés 453 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 9 juillet 2004 2
2 juil. 2004 à 19:42
ca a l'air pas mal et l'auteur du commentaire dit que c pour win xp ; mais chez moi ca marche pas...

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.