Compartir a través de


Función GetProcessHandleFromHwnd

Recupera un identificador de proceso de un identificador de ventana.

Sintaxis

HANDLE WINAPI GetProcessHandleFromHwnd(
  _In_ HWND hwnd
);

Parámetros

hwnd [in]

Tipo: HWND

Identificador de la ventana.

Valor devuelto

Tipo: HANDLE

Si se ejecuta correctamente, devuelve el identificador del proceso que posee la ventana.

Si no se ejecuta correctamente, devuelve NULL.

Comentarios

En versiones anteriores del sistema operativo, un proceso podría abrir otro proceso (para acceder a su memoria, por ejemplo) mediante OpenProcess. Esta función se realiza correctamente si el autor de la llamada tiene los privilegios adecuados; normalmente, el autor de la llamada y el proceso de destino deben ser el mismo usuario.

Sin embargo, en Windows Vista, Se produce un error en OpenProcess en el escenario en el que el autor de la llamada tiene UIAccess y el proceso de destino se eleva. En este caso, el propietario del proceso de destino está en el grupo Administradores, pero el proceso de llamada se ejecuta con el token restringido, por lo que no tiene pertenencia a este grupo y se deniega el acceso al proceso con privilegios elevados. Sin embargo, si el autor de la llamada tiene UIAccess, puede usar un enlace de Windows para insertar código en el proceso de destino y, desde dentro del proceso de destino, envíe un identificador al autor de la llamada.

GetProcessHandleFromHwnd es una función útil que usa esta técnica para obtener el identificador del proceso que posee el HWND especificado. Tenga en cuenta que solo se realiza correctamente en los casos en los que el autor de la llamada y el proceso de destino se ejecutan como el mismo usuario. El identificador devuelto tiene los siguientes privilegios: PROCESS_DUP_HANDLE | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | SINCRONIZAR. Si se requieren otros privilegios, puede que sea necesario implementar la técnica de enlace explícitamente en lugar de usar esta función.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2003 [solo aplicaciones de escritorio]
Archivo DLL
Oleacc.dll