Page 2 sur 2
Publié : mar. 13/nov./2007 20:43
par Jacobus
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!
Publié : mer. 14/nov./2007 0:50
par Dr. Dri
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 :
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
Dri
Publié : mer. 14/nov./2007 19:49
par Jacobus
Au poil, exactement ce que je cherchais! Merci Dri
