python 遍历指定窗口的所有子窗口和孙窗口,并返回符合条件的窗口句柄和屏幕位置 并点击 所在位置的中间
时间: 2023-07-19 22:34:46 浏览: 137
遍历符合条件的窗口句柄
好的,以下是使用 Python 实现遍历指定窗口的所有子窗口和孙窗口,并返回符合条件的窗口句柄和屏幕位置,并点击所在位置的中间的示例代码:
```python
import win32gui
import win32api
def find_child_windows(hwnd, class_name):
"""
遍历指定窗口的所有子窗口和孙窗口,返回符合条件的窗口句柄和屏幕位置
:param hwnd: 父窗口句柄
:param class_name: 子窗口类名
:return: 符合条件的窗口句柄和屏幕位置
"""
results = []
win32gui.EnumChildWindows(hwnd, lambda hwnd, param: param.append(hwnd), results)
child_windows = []
for handle in results:
if win32gui.GetClassName(handle) == class_name:
rect = win32gui.GetWindowRect(handle)
child_windows.append((handle, rect))
return child_windows
def click_window(handle, rect):
"""
模拟点击窗口
:param handle: 窗口句柄
:param rect: 窗口在屏幕上的位置
"""
x, y = rect[0] + (rect[2] - rect[0]) // 2, rect[1] + (rect[3] - rect[1]) // 2 # 点击位置为窗口的中心点
lParam = win32api.MAKELONG(x, y)
win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam)
win32gui.SendMessage(handle, win32con.WM_LBUTTONUP, 0, lParam)
if __name__ == '__main__':
# 查找指定窗口的句柄
hwnd = win32gui.FindWindow(None, "Untitled - Notepad")
if hwnd == 0:
print("窗口未找到")
else:
# 查找符合条件的子窗口
child_windows = find_child_windows(hwnd, "Edit")
for child in child_windows:
handle = child[0]
rect = child[1]
click_window(handle, rect)
```
这个示例程序会遍历指定父窗口的所有子窗口和孙窗口,找到符合条件的窗口句柄后,模拟点击该窗口的中心点。你可以根据自己的需求修改函数 `find_child_windows` 中的条件判断,以及点击窗口的位置和方式。
阅读全文