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 :roll: 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 :D