cs_freegamer
Messages postés99Date d'inscriptionvendredi 11 juillet 2003StatutMembreDernière intervention16 juin 2007
-
26 juin 2005 à 17:52
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
26 juin 2005 à 22:31
Bonjours,
Je cherche à connaitre soit le chemin des processus lancés sans passer par la DLL PSAPI, soit a obtenir leurs tailles
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 26 juin 2005 à 19:22
Connaitre le chemin des processus : Sous 98 ilm est dans le nom du processus directement.
Sous XP :
Public Declare Function OpenProcess Lib "kernel32" (ByVal
dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal
dwProcessId As Long) As Long
' Enumére les modules d'un processus
Public Declare Function EnumProcessModules Lib "psapi.dll" (ByVal
hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef
lpcbNeeded As Long) As Long
' Pour récupérer le chemin d'accès complet d'un processus
' Pour NT/2000/XP/2003... seulement
' Renvoie le nom du module "hModule" du processus "hProcess" (ouvert avec OpenProcess)
Public Declare Function GetModuleFileNameEx Lib "psapi.dll" Alias
"GetModuleFileNameExA" (ByVal hProcess As Long, ByVal hModule As Long,
ByVal lpFilename As String, ByVal nSize As Long) As Long
'accès en lecture de la mémoire
Public Const PROCESS_VM_READ As Long = (&H10)
'accès en collecte d'informations
Public Const PROCESS_QUERY_INFORMATION As Long = (&H400)
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
' Renvoie le chemin complet du processus
Public Function GetProcessFileName(ProcessID As Long) As String
On Error GoTo Fin
' Processus 0
If ProcessID = 0 Then
GetProcessFileName = "[System Process]"
' Processus 4
ElseIf ProcessID = 4 Then
GetProcessFileName = "System"
Else
' On cherche son chemin d'accès complet
Dim hProcess As Long 'handle du processus
Dim hModule As Long 'handle du module de l'exe
Dim Ret As Long 'résultat
' On demande un handle pour le processus
hProcess =
OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0&,
ProcessID)
cs_freegamer
Messages postés99Date d'inscriptionvendredi 11 juillet 2003StatutMembreDernière intervention16 juin 2007 26 juin 2005 à 19:52
Merci de me repondre si vite, mais comme le precisse BruNews, je voudrais le faire sans psapi.dll, sinon je voudrais savoir comment recuperer leur taille en octect sur le disque dur
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 juin 2005 à 20:06
T'es allé voir le lien, tu as vu comment on fait sans psapi ???
Si ok on continue:
Chaque fichier tu le passes par FindFirstFile qui te remplira une Win32_FIND_DATA et tu auras la taille sur 64 bits dans ses champs.
cs_freegamer
Messages postés99Date d'inscriptionvendredi 11 juillet 2003StatutMembreDernière intervention16 juin 2007 26 juin 2005 à 22:10
Enfait j'aimerais pouvoir avoir la taille de l'executable correspondant au processus en octect, soit en connaissant le chemin complet soit lister les processus avec leur taille directement.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 juin 2005 à 22:31
ben enfin, c'est soit en utilisant psapi soit comme dans ma source (ce que fait psapi en interne), y a pas 36 méthodes. Ensuite reste à savoir si c'est traductible en VB sans plantage, à toi d'essayer.