假设我有一个进程的窗口层次结构:
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/