PID et HANDLE [Résolu]

Signaler
Messages postés
11
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
9 avril 2010
-
Messages postés
8
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
13 février 2010
-
Bonjour,

J'aimerai savoir comment récupérer l'HANDLE d'une fenêtre quand on connais son PID.
Merci d'avance

5 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Un PID c'est pour un processus, or un processus peut avoir plusieurs fenêtres, donc ca peut poser problème.
Sinon tu utiliset EnumWindows, et dans la EnumWindowsProc tu compare le pid:

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
  DWORD dwProcessID;
  GetWindowThreadProcessId(hwnd, &dwProcessID);
  if(dwProcessID == pid)
  {
    // Cette fenêtre appartient au processus
    return FALSE;
  }
  return TRUE;
}

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

HANDLE HWND = FindWindow(NULL,"titre de la fentre");

ou sinon tu recupere son PID et en plus ta son HANDLE ^^ :
le Handle de la fenetre est HPROC, LE PID est PID

HANDLE Hproc;
DWORD PID;
 PROCESSENTRY32 pe32 = {0};
   
    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hProcessSnap == (HANDLE)-1) return 0;

    pe32.dwSize = sizeof(PROCESSENTRY32);

    BOOL bContinue = Process32First(hProcessSnap, &pe32);
   
    while (bContinue)
    {

            if(!strcmp("NOM.EXE",pe32.szExeFile)) {
                PID=pe32.th32ProcessID;
                MessageBox(DLG,"NOM.exe Found !","Test",0);
                              break;
         
    }
       
        bContinue = Process32Next(hProcessSnap, &pe32);
    }

Hproc= OpenProcess(PROCESS_ALL_ACCESS,NULL,(DWORD)PID); // On recupere le HANDLE
Messages postés
11
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
9 avril 2010

Merci pour ces solutions. Je n'avais que la solution avec EnumWindows.
Mais je voulais savoir s'il n'y avait pas une API pour sa.
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

j'avais compris que tu n'avais pas le PID
Messages postés
8
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
13 février 2010

comment savoir le nom de la fenetre qui a le focus en c#
thanks