1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Public Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
Public 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
Public Function GetPathFromPID(lPID As Long) As String
GetPathFromPID = vbNullString
Dim lHprcss As Long, lSize As Long, sResult As String, lReturn As Long
Dim lngModules(1 To 200) As Long
'création d'un buffer
sResult = Space$(512)
lHprcss = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lPID) 'get the hInstance application
If lHprcss = 0 Then Exit Function 'echec
lngReturn = EnumProcessModules(lHprcss, lngModules(1), 200, 0)
lSize = GetModuleFileNameExA(lHprcss, lReturn, sResult, 512)
CloseHandle lHprcss 'ferme le handle
GetPathFromPID = Left$(sResult, lSize) 'récupère le nom
End Function |
Partager