【发布时间】:2010-11-20 11:02:15
【问题描述】:
我尝试过使用“获取桌面枚举的所有进程 ID”的方法,但是不起作用。
- 有没有办法将句柄转换为窗口句柄? -或-
- 有没有办法获取进程 ID 并找出进程生成的所有子窗口?
由于多个进程问题,我不想使用FindWindow
。
【问题讨论】:
我尝试过使用“获取桌面枚举的所有进程 ID”的方法,但是不起作用。
由于多个进程问题,我不想使用FindWindow
。
【问题讨论】:
您可以调用EnumWindows() 遍历屏幕上的所有*窗口,然后使用GetWindowThreadProcessId() 找出哪些属于您的进程。
例如:
BOOL CALLBACK ForEachTopLevelWindow(HWND hwnd, LPARAM lp)
{
DWORD processId;
GetWindowThreadProcessId(hwnd, &processId);
if (processId == (DWORD) lp) {
// `hwnd` belongs to the target process.
}
return TRUE;
}
VOID LookupProcessWindows(DWORD processId)
{
EnumWindows(ForEachTopLevelWindow, (LPARAM) processId);
}
【讨论】: