GetProcessHandleFromHwnd 函数

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

语法

HANDLE WINAPI GetProcessHandleFromHwnd(
  _In_ HWND hwnd
);

parameters

hwnd [in]

类型: HWND

窗口句柄。

返回值

类型: HANDLE

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

如果未成功,则返回 NULL

注解

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

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

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

要求

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