Funzione GetProcessHandleFromHwnd

Recupera un handle di processo da un handle di finestra.

Sintassi

HANDLE WINAPI GetProcessHandleFromHwnd(
  _In_ HWND hwnd
);

Parametri

hwnd [in]

Tipo: HWND

Handle di finestra.

Valore restituito

Tipo: HANDLE

Se ha esito positivo, restituisce l'handle del processo proprietario della finestra.

Se non ha esito positivo, restituisce NULL.

Commenti

Nelle versioni precedenti del sistema operativo, un processo potrebbe aprire un altro processo (ad esempio per accedere alla memoria) usando OpenProcess. Questa funzione ha esito positivo se il chiamante ha privilegi appropriati; in genere il chiamante e il processo di destinazione devono essere lo stesso utente.

In Windows Vista, tuttavia, OpenProcess non riesce nello scenario in cui il chiamante ha UIAccess e il processo di destinazione viene elevato. In questo caso, il proprietario del processo di destinazione si trova nel gruppo Administrators, ma il processo di chiamata viene eseguito con il token con restrizioni, quindi non ha appartenenza a questo gruppo e viene negato l'accesso al processo con privilegi elevati. Se il chiamante ha UIAccess, tuttavia, può usare un hook di windows per inserire codice nel processo di destinazione e dall'interno del processo di destinazione, inviare un handle di nuovo al chiamante.

GetProcessHandleFromHwnd è una funzione di praticità che usa questa tecnica per ottenere l'handle del processo proprietario dell'HWND specificato. Si noti che ha esito positivo solo nei casi in cui il chiamante e il processo di destinazione vengono eseguiti come lo stesso utente. L'handle restituito ha i privilegi seguenti: PROCESS_DUP_HANDLE | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | SINCRONIZZARE. Se sono necessari altri privilegi, potrebbe essere necessario implementare la tecnica di hooking in modo esplicito anziché usare questa funzione.

Requisiti

Requisito Valore
Client minimo supportato
Windows XP [solo app desktop]
Server minimo supportato
Windows Server 2003 [solo app desktop]
DLL
Oleacc.dll