通过进程Id获取窗口句柄
时间: 2023-07-28 07:06:57 浏览: 132
通过进程ID找到窗口句柄.
4星 · 用户满意度95%
可以通过以下方式获取进程Id对应的窗口句柄:
1. 使用函数EnumWindows枚举所有窗口,获取每个窗口所对应的进程Id,判断是否与指定进程Id相同,如果相同则返回该窗口句柄。
2. 使用函数GetWindowThreadProcessId获取指定窗口所属进程的Id,判断是否与指定进程Id相同,如果相同则返回该窗口句柄。
具体实现可以参考以下代码:
```c++
HWND GetWindowHandleFromProcessId(DWORD processId) {
HWND result = NULL;
EnumWindows([](HWND hwnd, LPARAM lParam) -> BOOL {
DWORD pid;
GetWindowThreadProcessId(hwnd, &pid);
if (pid == (DWORD)lParam) {
*((HWND*)lParam) = hwnd;
return FALSE;
}
return TRUE;
}, (LPARAM)&result);
return result;
}
```
其中,GetWindowThreadProcessId函数可以获取指定窗口所属进程的Id,EnumWindows函数可以枚举所有窗口,通过回调函数判断每个窗口所对应的进程Id是否与指定进程Id相同,如果相同则返回该窗口句柄。
阅读全文