Trouver le pid d'un processus depuis son nom (C++) [Résolu]

Signaler
Messages postés
248
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
15 mars 2007
-
Messages postés
198
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
18 mars 2011
-
Bonjour !

Donc voila, cela fait un moment que je cherche mais je n'y arrive pas...
Quelqu'un aurait-il une fonction pour trouver le pid d'un processus à partir de son nom sous win32...?

Merci beaucoup!

Il était une fois, tralalala.. .

2 réponses

Messages postés
198
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
18 mars 2011
1
#include <windows.h>
#include <tlhelp32.h>  //th32.lib ou libth32.a
#include <stdio.h>



//---------------------------------------------------
DWORD GetPidByName(char *szProcName)
{
  DWORD dwPID = 0; 
  PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)};
  HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);



  if(hSnap != INVALID_HANDLE_VALUE)
  {
    if(Process32First(hSnap, &pe))
    {
      do
      {
        if(strcmpi(pe.szExeFile, szProcName) == 0)
        {
          dwPID = pe.th32ProcessID;
          break;
        }   
      }
      while(Process32Next(hSnap, &pe));
    }
    CloseHandle(hSnap);
  }
  return dwPID;
}



//---------------------------------------------------
int main(void)
{
  printf("PID = %ld\n", GetPidByName("explorer.exe"));
  return 0;
}
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Tu peux énumérer tous les processus en utilisant les fonctions suivates:
CreateToolhelp32Snapshot()
Process32First()
Process32Next() <- Dans une boucle.
Le membre szExeFile de la structure  PROCESSENTRY32 contiendra le nom de l'exécutable. Si le nom correspond à celui recherché alors on récupère le PID dans le membre th32ProcessID.