GetProcessHandleFromHwnd 函式
從視窗控制碼擷取進程控制碼。
語法
HANDLE WINAPI GetProcessHandleFromHwnd(
_In_ HWND hwnd
);
參數
-
hwnd [in]
-
類型: HWND
視窗控制代碼 (Window Handle)。
傳回值
類型: HANDLE
如果成功,會傳回擁有視窗之進程的控制碼。
如果未成功,則傳回 Null。
備註
在舊版作業系統中,進程可能會開啟另一個進程 (來存取其記憶體,例如使用 OpenProcess) 。 如果呼叫端具有適當的許可權,則此函式會成功;通常呼叫端和目標進程必須是相同的使用者。
不過,在 Windows Vista 上, OpenProcess 會在呼叫端具有 UIAccess 且目標進程提升的情況下失敗。 在此情況下,目標進程的擁有者位於 Administrators 群組中,但呼叫進程是以受限制的權杖執行,因此沒有此群組的成員資格,而且拒絕存取提升許可權的進程。 不過,如果呼叫端具有 UIAccess,他們可以使用視窗勾點將程式碼插入目標進程,並從目標進程內將控制碼傳回給呼叫端。
GetProcessHandleFromHwnd 是一種便利函式,會使用這項技術來取得擁有指定 HWND 之進程的控制碼。 請注意,只有在呼叫端和目標進程以相同使用者身分執行的情況下,它才會成功。 傳回的控制碼具有下列許可權:PROCESS_DUP_HANDLE |PROCESS_VM_OPERATION |PROCESS_VM_READ |PROCESS_VM_WRITE |同步。 如果需要其他許可權,您可能需要明確地實作勾點技術,而不是使用此函式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows Server 2003 [僅限桌面應用程式] |
DLL |
|