Savoir si un programme est lancé

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 085 fois - Téléchargée 40 fois

Contenu du snippet

Cette fonction permet de savoir à tout moment si un programme (ex: c:\windows\sol.exe) est lancé ou non (en analysant les processus). Elle a l'avantage de ne pas fonctionner que sur NT (comme l'API Module32Next).
Code original de l'API-Guide (http://www.allapi.net) que j'ai légerement retouché.

Source / Exemple :


' Original code from API-Guide (http://www.allapi.net)
' Modified by CalistX (calistx@ifrance.com)
' Requires Windows 2000 or later; Requires Windows 95 or later

Public Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Public Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Public Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Public Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)

Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260

Public 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 * MAX_PATH
End Type

Public Function CheckEXE(ByVal EXE As String) As Boolean
    Dim hSnapShot As Long, uProcess As PROCESSENTRY32
    
    hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
    uProcess.dwSize = Len(uProcess)
    r = Process32First(hSnapShot, uProcess)
    Do While r
        FileName = Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0))
        If FileName = UCase(EXE) Then CheckEXE = True: Exit Function
        r = Process32Next(hSnapShot, uProcess)
    Loop
    CloseHandle hSnapShot
End Function

Conclusion :


Aucun probléme à ma connaissance.

A voir également

Ajouter un commentaire Commentaires
Messages postés
123
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
30 mars 2009

Chez moi, j'ai réussi à la faire tourner en ne mettant pas le chemin complet de l'exe (juste le nom de la tâche)
et dans CheckEXE, j'ai modifié

If FileName UCase(EXE) Then CheckEXE True: Exit Function

par

If UCase(FileName) UCase(EXE) Then CheckEXE True: Exit Function

tourne sous XP Pro SP1

Merci pour ta source
Messages postés
2
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
3 mars 2007

Je cherche à killer un prog ou exe sous NT ; pouvez vous m'aider????????
Messages postés
168
Date d'inscription
vendredi 18 janvier 2002
Statut
Membre
Dernière intervention
19 octobre 2009

j'ai eu le meme prob et je crois en fait que certain fois il sort le nom complet (c:windows
otepad.exe) et des fois juste notepad.exe fais un msgbox de ce qu'il tourne et vérife. possible que ca soit autre chose. mais cherche je me rapelle que c'étais une petite connerie en fait
Messages postés
1
Date d'inscription
jeudi 23 janvier 2003
Statut
Membre
Dernière intervention
15 octobre 2003

Yop :)

Ne marche pas bien sous XP
=> test avec "SOUNDMAN.EXE" (manager de la carte son)
=> ok marche

=> test avec "notepad.exe" ou autre
=> marche pas :(

Bizarre...
Messages postés
168
Date d'inscription
vendredi 18 janvier 2002
Statut
Membre
Dernière intervention
19 octobre 2009

Public Type PROCESSENTRY32
génére une erreur
Afficher les 11 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.