begin process at 2012 02 12 03:55:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > LISTER LES PROCESSUS ACTIFS AVEC LES API

LISTER LES PROCESSUS ACTIFS AVEC LES API


 Information sur la source

Note :
7,8 / 10 - par 5 personnes
7,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :26/08/2002 Date de mise à jour :26/08/2002 12:10:51 Vu :6 842

Auteur : SuperClic

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

 Description

Cette fonction, avec la valeur 0 renvoie le nb de process actifs
Avec une valeur comprise entre 1 et le nb de processus, les énumerrent et renvoie le chemin ou le nom d' un de ces processus.
Sinon, rien.

Source

  • 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 _
  • EnumProcesses Lib "PSAPI.DLL" (ByRef _
  • lpidProcess As Long, ByVal cb As Long, _
  • ByRef cbNeeded As Long) As Long
  • Private Declare Function _
  • GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal _
  • bhProcess As Long, _
  • ByVal hModule As Long, ByVal _
  • ModuleName As String, _
  • ByVal nSize As Long) As Long
  • Private Declare Function _
  • EnumProcessModules Lib "PSAPI.DLL" (ByVal _
  • hProcess As Long, ByRef _
  • lphModule As Long, ByVal cb As Long, ByRef _
  • cbNeeded As Long) As Long
  • Private Const PROCESS_QUERY_INFORMATION = 1024
  • Private Const PROCESS_VM_READ = 16
  • Private Const MAX_PATH = 260
  • Private Type PROCESS_MEMORY_COUNTERS
  • cb As Long
  • PageFaultCount As Long
  • PeakWorkingSetSize As Long
  • WorkingSetSize As Long
  • QuotaPeakPagedPoolUsage As Long
  • QuotaPagedPoolUsage As Long
  • QuotaPeakNonPagedPoolUsage As Long
  • QuotaNonPagedPoolUsage As Long
  • PagefileUsage As Long
  • PeakPagefileUsage As Long
  • End Type
  • Private Type PROCESSENTRY32
  • dwSize As Long
  • cntUsage As Long
  • th32ProcessID As Long ' Le processus
  • th32DefaultHeapID As Long
  • th32ModuleID As Long ' exe associé
  • cntThreads As Long
  • th32ParentProcessID As Long
  • pcPriClassBase As Long
  • dwFlags As Long
  • szExeFile As String * 260
  • End Type
  • Private Function Processus(ByVal _
  • ID As Integer) As String
  • On Error Resume Next
  • Dim booResult As Boolean
  • Dim lngLength As Long
  • Dim lngProcessID As Long
  • Dim strProcessName As String
  • Dim lngSnapHwnd As Long
  • Dim udtProcEntry As PROCESSENTRY32
  • Dim lngCBSize As Long
  • Dim lngCBSizeReturned As Long
  • Dim lngNumElements As Long
  • Dim lngProcessIDs() As Long
  • Dim lngCBSize2 As Long
  • Dim lngModules(1 To 200) As Long
  • Dim lngReturn As Long
  • Dim strModuleName As String
  • Dim lngSize As Long
  • Dim lngHwndProcess As Long
  • Dim lngLoop As Long
  • Dim pmc As PROCESS_MEMORY_COUNTERS
  • Dim strProcName, strProcName2 As String
  • Dim NbProc, ListeProc(1 To 10000) As String
  • NbProc = 0
  • booResult = False
  • ' nom de Explorer
  • EXEName = "explorer.exe"
  • EXEName = UCase$(Trim$(EXEName))
  • lngLength = Len(EXEName)
  • lngCBSize = 8
  • lngCBSizeReturned = 96
  • Do While lngCBSize <= lngCBSizeReturned
  • DoEvents
  • 'Incremente la taille
  • lngCBSize = lngCBSize * 2
  • 'Loue la mémoire
  • ReDim lngProcessIDs(lngCBSize / 4) As Long
  • 'Prends l' ID du processus
  • lngReturn = EnumProcesses(lngProcessIDs(1), lngCBSize, lngCBSizeReturned)
  • Loop
  • 'Compte les processus
  • lngNumElements = lngCBSizeReturned / 4
  • For lngLoop = 1 To lngNumElements
  • DoEvents
  • 'Donne le handle du processus et l' ouvre
  • lngHwndProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lngProcessIDs(lngLoop))
  • If lngHwndProcess <> 0 Then
  • lngReturn = EnumProcessModules(lngHwndProcess, lngModules(1), 200, lngCBSize2)
  • If lngReturn <> 0 Then
  • NbProc = NbProc + 1
  • strModuleName = Space(MAX_PATH)
  • lngSize = 500
  • 'Prend le nom du processus
  • lngReturn = GetModuleFileNameExA(lngHwndProcess, lngModules(1), strModuleName, lngSize)
  • 'Enlève les espaces
  • strProcessName = Left(strModuleName, lngReturn)
  • ListeProc(NbProc) = strProcessName
  • End If
  • End If
  • 'Ferme les handles du processus
  • lngReturn = CloseHandle(lngHwndProcess)
  • DoEvents
  • Next
  • If ID = 0 Then
  • Processus = NbProc
  • ElseIf ID > 0 And ID <= NbProc Then
  • Processus = ListeProc(ID)
  • Else
  • Processus = ""
  • End If
  • End Function
  • Sub Form_Load() 'pour l' appeller
  • 'Si i=0 --> variable= nombre de procesus
  • 'Sinon --> variable= nom ou chemin d' accès du processus "i"
  • variable = Processus(i)
  • MsgBox (variable)
  • End Sub
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 _
EnumProcesses Lib "PSAPI.DLL" (ByRef _
    lpidProcess As Long, ByVal cb As Long, _
    ByRef cbNeeded As Long) As Long
Private Declare Function _
GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal _
    bhProcess As Long, _
    ByVal hModule As Long, ByVal _
    ModuleName As String, _
    ByVal nSize As Long) As Long
Private Declare Function _
EnumProcessModules Lib "PSAPI.DLL" (ByVal _
    hProcess As Long, ByRef _
    lphModule As Long, ByVal cb As Long, ByRef _
    cbNeeded As Long) As Long

Private Const PROCESS_QUERY_INFORMATION = 1024
Private Const PROCESS_VM_READ = 16
Private Const MAX_PATH = 260

Private Type PROCESS_MEMORY_COUNTERS
    cb As Long
    PageFaultCount As Long
    PeakWorkingSetSize As Long
    WorkingSetSize As Long
    QuotaPeakPagedPoolUsage As Long
    QuotaPagedPoolUsage As Long
    QuotaPeakNonPagedPoolUsage As Long
    QuotaNonPagedPoolUsage As Long
    PagefileUsage As Long
    PeakPagefileUsage As Long
End Type
Private Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long ' Le processus
    th32DefaultHeapID As Long
    th32ModuleID As Long ' exe associé
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * 260
End Type

Private Function Processus(ByVal _
ID As Integer) As String

On Error Resume Next

Dim booResult As Boolean
Dim lngLength As Long
Dim lngProcessID As Long
Dim strProcessName As String
Dim lngSnapHwnd As Long
Dim udtProcEntry As PROCESSENTRY32
Dim lngCBSize As Long
Dim lngCBSizeReturned As Long
Dim lngNumElements As Long
Dim lngProcessIDs() As Long
Dim lngCBSize2 As Long
Dim lngModules(1 To 200) As Long
Dim lngReturn As Long
Dim strModuleName As String
Dim lngSize As Long
Dim lngHwndProcess As Long
Dim lngLoop As Long
Dim pmc As PROCESS_MEMORY_COUNTERS
Dim strProcName, strProcName2 As String
Dim NbProc, ListeProc(1 To 10000) As String
NbProc = 0

booResult = False

' nom de Explorer
EXEName = "explorer.exe"
EXEName = UCase$(Trim$(EXEName))
lngLength = Len(EXEName)

lngCBSize = 8
lngCBSizeReturned = 96

Do While lngCBSize <= lngCBSizeReturned
       DoEvents
       'Incremente la taille
       lngCBSize = lngCBSize * 2
       'Loue la mémoire
       ReDim lngProcessIDs(lngCBSize / 4) As Long
       'Prends l' ID du processus
lngReturn = EnumProcesses(lngProcessIDs(1), lngCBSize, lngCBSizeReturned)
 Loop

'Compte les processus
lngNumElements = lngCBSizeReturned / 4
For lngLoop = 1 To lngNumElements
        DoEvents
        'Donne le handle du processus et l' ouvre

lngHwndProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lngProcessIDs(lngLoop))
        
        If lngHwndProcess <> 0 Then

lngReturn = EnumProcessModules(lngHwndProcess, lngModules(1), 200, lngCBSize2)
            
            If lngReturn <> 0 Then
                NbProc = NbProc + 1
                strModuleName = Space(MAX_PATH)
                lngSize = 500
                'Prend le nom du processus

lngReturn = GetModuleFileNameExA(lngHwndProcess, lngModules(1), strModuleName, lngSize)
                
                'Enlève les espaces
                strProcessName = Left(strModuleName, lngReturn)
                ListeProc(NbProc) = strProcessName
            End If
        End If
       'Ferme les handles du processus
       lngReturn = CloseHandle(lngHwndProcess)
       DoEvents
Next

If ID = 0 Then
    Processus = NbProc
ElseIf ID > 0 And ID <= NbProc Then
    Processus = ListeProc(ID)
Else
    Processus = ""
End If

End Function


Sub Form_Load() 'pour l' appeller

'Si i=0 --> variable= nombre de procesus
'Sinon --> variable= nom ou chemin d' accès du processus "i"


variable = Processus(i)
MsgBox (variable)

End Sub


 Conclusion

Je l' ai testé sous Win XP. Il parait que çà marche pas sous Win9x.


 Sources du même auteur

TROUVER L'IP D' UN SITE INTERNET AVEC L 'API WINSOCK
Source avec Zip S' AMUSER AVEC LES LECTEURS CD (BUG CORRIGÉ)
Source avec Zip DÉMINEUR SOUS EXCEL
CRÉATION OU MODIFICATION DE RACCOURCI (COMPATIBLE VBS)

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

Commentaires et avis

Commentaire de metos le 30/06/2003 13:43:51

marche pas sous win95 :)

Commentaire de moaleboss le 09/12/2003 17:52:55

Marche sans pb sous 2k Pro ;)

Commentaire de Mopii9 le 09/05/2005 19:06:27

Marche pas "fichier zip introuvable" je peux pas télécharger

Commentaire de noussefree le 08/06/2006 07:06:27

Merci pour ton prog, qui tourne à merveille sous Win2000 SP.

Egalement, il me permet de détecter la présence ou non d'un programme en mémoire. J'ai juste besoin de si "pvengine.exe" (POV-ray, un traceur pour ceux qui ne connaîtrait pas) est en mémoire ou pas. Et en fonction de sa présence, j'exécute ou pas le rendu suivant.

Vincent

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,186 sec (3)

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