处理窗把手

Sau*_*tin 5 c windows winapi

我已经尝试使用"抓取桌面枚举的所有进程ID"方法,但这不起作用.

  • 有没有办法将句柄转换为窗口句柄?-要么-
  • 有没有办法获取进程ID并找出该进程生成的所有子窗口?

FindWindow由于多个流程问题,我不想使用.

Fré*_*idi 6

你可以调用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);
}
Run Code Online (Sandbox Code Playgroud)