我尝试使用“获取桌面枚举的所有进程ID”方法,但是这种方法不起作用。

  • 是否有将句柄转换为窗口句柄的方法? -或-
  • 是否可以获取进程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);
    }
    

    关于c - Handlebars 到窗 Handlebars ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4232381/

    10-10 20:55