GetProcessHandleFromHwnd 函数

从窗口句柄检索进程句柄。

语法

HANDLE WINAPI GetProcessHandleFromHwnd(
  _In_ HWND hwnd
);

parameters

hwnd [in]

类型: HWND

窗口句柄。

返回值

类型: HANDLE

如果成功,则返回拥有窗口的进程句柄。

如果未成功,则返回 NULL

备注

在以前版本的操作系统中,进程可以打开另一个进程 (访问其内存,例如使用 OpenProcess) 。 如果调用方具有适当的权限,则此函数成功;通常调用方和目标进程必须是同一用户。

但是,在 Windows Vista 上, OpenProcess 在调用方具有 UIAccess 的情况下失败,并且目标进程提升。 在这种情况下,目标进程的所有者位于 Administrators 组中,但调用进程使用受限令牌运行,因此此组中没有成员身份,并拒绝访问提升的进程。 但是,如果调用方具有 UIAccess,则可以使用 Windows 挂钩将代码注入目标进程,并从目标进程中将句柄发送回调用方。

GetProcessHandleFromHwnd 是一个便捷函数,它使用此技术获取拥有指定 HWND 的进程句柄。 请注意,仅当调用方和目标进程以同一用户身份运行时,它才会成功。 返回的句柄具有以下特权:PROCESS_DUP_HANDLE |PROCESS_VM_OPERATION |PROCESS_VM_READ |PROCESS_VM_WRITE |同步。 如果需要其他权限,可能需要显式实现挂钩技术,而不是使用此函数。

要求

要求
最低受支持的客户端
Windows XP [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
DLL
Oleacc.dll