Ma solution de remplacement (lourdingue) consiste à lister d'abord tous les fichiers exe du système (procédure de recherche récursive) puis à tester quels sont ceux en cours d'exécution pour récupérer ensuite les infos de process. C'est un peu long comme méthode
Récuperer chemin+nom d'executable à partir du handle
j'ai cherché sur les 2 forums (Fr et En) mais je n'ai trouvé que le chemin de l'exe compilé par PB, mais rien sur un exécutable externe. Il doit bien y avoir une api qui fait ça mais je ne l'ai pas encore trouvé.
Ma solution de remplacement (lourdingue) consiste à lister d'abord tous les fichiers exe du système (procédure de recherche récursive) puis à tester quels sont ceux en cours d'exécution pour récupérer ensuite les infos de process. C'est un peu long comme méthode
Arf!
Ma solution de remplacement (lourdingue) consiste à lister d'abord tous les fichiers exe du système (procédure de recherche récursive) puis à tester quels sont ceux en cours d'exécution pour récupérer ensuite les infos de process. C'est un peu long comme méthode
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
bah en une recherche j'obtiens en premier résultat ma solution compatible 9X et NT, voila une adaptation du code que tu peux trouver ici :
Dri
Code : Tout sélectionner
Define Count.l, Proc32.PROCESSENTRY32, Temp.s
Define Kernel32ID.l, PSapiID.l, SnapshotID.l
Proc32\dwSize = SizeOf(PROCESSENTRY32)
Kernel32ID = OpenLibrary(#PB_Default, "kernel32.dll")
If Kernel32ID
PSapiID = OpenLibrary(#PB_Default, "psapi.dll")
SnapshotID = CallFunction(Kernel32ID, "CreateToolhelp32Snapshot", #TH32CS_SNAPPROCESS, #Null)
If SnapshotID
If CallFunction(Kernel32ID, "Process32First", SnapshotID, Proc32)
Repeat
If PSapiID
ProcessID = OpenProcess_(#PROCESS_QUERY_INFORMATION|#PROCESS_VM_READ, #False, Proc32\th32ProcessID)
Temp = Space(#MAX_PATH)
CallFunction(PSapiID, "GetModuleFileNameExA", ProcessID, #Null, Temp, #MAX_PATH)
Temp = Trim(Temp)
CloseHandle_(ProcessID)
Else
Temp = PeekS(@Proc32\szExeFile, #MAX_PATH)
EndIf
Debug Temp
Until CallFunction(Kernel32ID, "Process32Next", SnapshotID, Proc32) = #False
EndIf
CloseHandle_(SnapshotID)
EndIf
CloseLibrary(PSapiID)
CloseLibrary(Kernel32ID)
EndIf