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 |
|