win32:在孩子的父母的孩子身上找不到孩子的窗口

时间:2012-09-03 21:09:56

标签: python winapi pywin32

我有一个Internet Explorer页面,它生成了一个弹出窗口。我可以从弹出窗口的句柄中获取父级:

>>> child.handle
15208472
>>> win32gui.GetParent(child.handle)
33230502

但是我无法使用EnumChildWindows找到孩子的句柄:

>>> win32gui.EnumChildWindows(win32gui.GetParent(child.handle), lambda hwnd,p: child_handles.append(hwnd), None)
>>> len(child_handles)
39
>>> child.handle in child_handles
False

我也以递归的方式完成了这项任务(让所有孩子的孩子都得到了)并且仍然找不到孩子的手柄。为什么会出现这种情况?

1 个答案:

答案 0 :(得分:2)

弹出窗口不是子窗口,因此无法使用EnumChildWindows进行枚举。

当您调用win32gui.GetParent时,您实际上获得了弹出窗口的“所有者”窗口,但“所有者”和“父级”是两个不同的东西。有关更多信息,请参阅MSDN entry