Terminer un processus du système

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 909 fois - Téléchargée 29 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

Messages postés
20
Date d'inscription
mercredi 19 octobre 2005
Statut
Membre
Dernière intervention
12 décembre 2005

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!
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
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.
Messages postés
453
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
9 juillet 2004
2
oui je l'ai essayé sur win xp. j'ai aussi essayé directement en tapant la commande dans Démarrer > Exécuter.
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

oh zut.
et tu as windows XP ?
Messages postés
453
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
9 juillet 2004
2
ca a l'air pas mal et l'auteur du commentaire dit que c pour win xp ; mais chez moi ca marche pas...
Afficher les 15 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.