Compartilhar via


Função GetProcessHandleFromHwnd

Recupera um identificador de processo de um identificador de janela.

Sintaxe

HANDLE WINAPI GetProcessHandleFromHwnd(
  _In_ HWND hwnd
);

Parâmetros

hwnd [in]

Tipo: HWND

O identificador da janela.

Valor retornado

Tipo: HANDLE

Se tiver êxito, retornará o identificador do processo que possui a janela.

Se não for bem-sucedido, retornará NULL.

Comentários

Em versões anteriores do sistema operacional, um processo poderia abrir outro processo (para acessar sua memória, por exemplo) usando OpenProcess. Essa função terá êxito se o chamador tiver privilégios apropriados; geralmente, o chamador e o processo de destino devem ser o mesmo usuário.

No Windows Vista, no entanto, o OpenProcess falha no cenário em que o chamador tem UIAccess e o processo de destino é elevado. Nesse caso, o proprietário do processo de destino está no grupo Administradores, mas o processo de chamada está em execução com o token restrito, portanto, não tem associação nesse grupo e tem acesso negado ao processo elevado. No entanto, se o chamador tiver UIAccess, ele poderá usar um gancho de janela para injetar código no processo de destino e, de dentro do processo de destino, enviar um identificador de volta para o chamador.

GetProcessHandleFromHwnd é uma função de conveniência que usa essa técnica para obter o identificador do processo que possui o HWND especificado. Observe que ele só é bem-sucedido nos casos em que o chamador e o processo de destino estão sendo executados como o mesmo usuário. O identificador retornado tem os seguintes privilégios: PROCESS_DUP_HANDLE | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | SINCRONIZAR. Se outros privilégios forem necessários, talvez seja necessário implementar a técnica de conexão explicitamente em vez de usar essa função.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2003 [somente aplicativos da área de trabalho]
DLL
Oleacc.dll