begin process at 2010 02 10 11:32:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > SAVOIR SI UN PROGRAMME EST LANCÉ

SAVOIR SI UN PROGRAMME EST LANCÉ


 Information sur la source

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Initié Date de création :18/11/2002 Date de mise à jour :18/11/2002 15:10:54 Vu :2 708

Auteur : CalistX

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

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

  • ' 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
' 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.


 Sources du même auteur

Source avec Zip WINDOWS XP CONTROLS
SAVOIR SI UNE TOUCHE EST PRESSÉE OU NON
Source avec Zip DREAMPOPUP: ONGLET STYLE MX
Source avec Zip DREAMBAR: UNE SIMPLE BARRE DE PROGRESSION

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) FAIRE LA DIFFÉRENCE ENTRE UNE ADRESSE EMAIL QUI EXISTE D'UNE... par lesinfosdugeek
ENVOYER UN MESSAGE SUR SON COMPTE TWITTER par lesinfosdugeek
Source avec Zip Source avec une capture TROUVER LES CLÉS DE REGISTRE QUI CHANGENT par Flocreate
Source avec Zip IP_PUBLIQUE_INTERNETGETCONNECTEDSTATE par marco62118
Source avec Zip TOUTES LES RÉSOLUTIONS D'ÉCRAN ET TAILLE MAXI DE LA FORM AUD... par marco62118

Commentaires et avis

Commentaire de wbr le 18/11/2002 15:23:20

j'aime bien, mais précise un peu ton code...
pour vérfifier:

If CheckEXE("c:windows
otepad.exe") = True Then
Msgbox "Ouvert"
Else
Msgbox "Fermé"
End if

A+

Commentaire de cosmic le 18/11/2002 20:29:23

Pas assez de commentaires.
N'est pas forcément comprehensible pour les débutants
Je trouve dommage le manque de commentaires dans bon nombre de sources sur ce site.

Commentaire de babeuk le 19/11/2002 21:22:09

c cool, parce que moi avt pr la compatibilité, j'utilisais ca :


Private Sub Command1_Click()
If lance(Text1.Text) Then MsgBox "LANCE !" Else MsgBox "PAS LANCE !"
End Sub
Public Function lance(cheEXE As String) As Boolean
On Error GoTo errr
If Dir(cheEXE) = "" Then Exit Function
Open cheEXE For Append As #1
Close #1
lance = False
Exit Function
errr:
lance = True
End Function

Commentaire de CalistX le 20/11/2002 13:16:21

Ouais, c pas con. Moi j'ai cherché un bon moment avant de trouver cette fonction. J'ai pas pensé à ta solution...

Commentaire de Hobby le 19/04/2003 05:10:52

Je pense que cela ne foncionne pas sous XP. J'ai fait un test avec notepad et write. Ne détect plus rien.

Merci
Olivier

Commentaire de metos le 30/06/2003 13:52:57

c'est super sous XP je peux meme pas compiler

Commentaire de metos le 30/06/2003 13:53:20

Public Type PROCESSENTRY32
génére une erreur

Commentaire de miflip le 15/10/2003 15:28:45

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...

Commentaire de metos le 15/10/2003 17:34:07

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

Commentaire de nohas67 le 17/11/2004 18:45:17

Je cherche à killer un prog ou exe sous NT ; pouvez vous m'aider????????

Commentaire de PsyCaDi le 10/02/2005 11:45:32

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

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales