Terminer un processus du système

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

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.