假设我有一个进程的窗口层次结构:

Main Window               (class name: XYZ_Widget_1)
`- Child Window           (class name: XYZ_Widget_0)
  `- Child-Child Window    (class name: XYZ_Renderer)

如何找到 Child-Child Window 的 HWND?

我尝试在 FindWindow 类上使用 XYZ_Renderer Win32 API 函数,但 FindWindow 函数找不到子窗口。

然后我尝试使用 FindWindow 找到 Main Window ,成功了,但之后使用 FindWindowEx 只能找到 Child Window 因为 Child-Child Window 不是 Main Window 的 child 。

我想我可以更深入一层并在找到 Child Window 后调用 FindWindowEx。

但在我这样做之前,我想也许有一种简单的方法可以找到 Child-Child Window

最佳答案

您必须为每个要下降的子级别调用 FindWindowEx(),将在前一级别中找到的 HWND 指定为父级,例如:

HWND hWnd = FindWindow("XYZ_Widget_1", NULL);
if (hWnd != NULL)
{
    hWnd = FindWindowEx(hWnd, NULL, "XYZ_Widget_0", NULL);
    if (hWnd != NULL)
    {
        hWnd = FindWindowEx(hWnd, NULL, "XYZ_Renderer", NULL);
        // and so on...
    }
}

没有更简单的方法来做到这一点。为了简化您的代码,您可以编写自己的函数,该函数接受类/窗口名称的路径作为输入,根据需要循环调用每个分支的 FindWindow/Ex()

关于api - 如何使用 Win32 API 找到子窗口(3 级深)的子窗口的子 HWND?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12738408/

10-09 20:24
查看更多