gpt4 book ai didi

api - 如何使用 Win32 API 查找子窗口(3 层深)的子窗口的子 HWND?

转载 作者:行者123 更新时间:2023-12-02 06:02:26 24 4
gpt4 key购买 nike

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

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

如何找到子子窗口的HWND?

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

然后我尝试使用FindWindow查找Main Window,成功了,但是之后使用FindWindowEx只能找到子窗口 因为子子窗口不是主窗口的子窗口。

我想我可以更深入一层,一旦找到子窗口就调用 FindWindowEx。

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

最佳答案

您必须为要向下的每个子级别调用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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com