从控制手柄获取进程

Fai*_*iew 2 c c# c++ windows winapi

我有一个属于系统中另一个进程的控件的句柄.
我怎样才能获得它所属的流程?我已经尝试查找合适的功能,但没有找到太多.

man*_*ell 6

我想通过"处理控件",你的意思是HWND.

然后,使用GetWindowThreadProcessId

HWND hWndToSomeControl;

[...]

DWORD dwPid;
GetWindowThreadProcessId( hWndToSomeControl, &dwPid );
Run Code Online (Sandbox Code Playgroud)

编辑:错误控制(在Windows 7上测试):

HWND hWndToSomeControl;

[...]

DWORD dwPid;
DWORD dwTid = GetWindowThreadProcessId( hWndToSomeControl, &dwPid );
if ( dwTid == 0 ) {
    DWORD dwLE = GetLastError(); // may be 1400 ERROR_INVALID_WINDOW_HANDLE
    [...]
}
Run Code Online (Sandbox Code Playgroud)