Trouver le pid d'un processus depuis son nom (C++)

Résolu
tekila_bandita Messages postés 248 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 15 mars 2007 - 15 mars 2007 à 13:13
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011 - 15 mars 2007 à 19:05
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

cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011
15 mars 2007 à 19:05
#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;
}
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
15 mars 2007 à 17:29
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.
0
Rejoignez-nous