python 通过 标题 找到 指定句柄下 符合标题的 窗口 返回 其句柄和屏幕位置 类名 并点击其中心点
时间: 2024-03-16 17:42:19 浏览: 154
可以使用 pywin32 库来实现这个功能。
首先,需要使用 `win32gui.EnumWindows` 枚举所有窗口,找到指定句柄下的窗口。可以使用 `win32gui.GetWindowText` 和 `win32gui.GetClassName` 函数获取窗口的标题和类名。
接着,需要在找到的窗口中查找符合标题的子窗口。可以使用 `win32gui.FindWindowEx` 函数来查找子窗口。
最后,可以使用 `win32gui.GetWindowRect` 函数获取窗口的屏幕位置,计算出其中心点,并使用 `win32api.SetCursorPos` 函数将鼠标移动到其中心点,再使用 `win32api.mouse_event` 函数模拟鼠标点击。
以下是示例代码:
```python
import win32api
import win32con
import win32gui
def find_window_by_title(handle, title):
def callback(hwnd, hwnds):
if win32gui.IsWindowVisible(hwnd) and title in win32gui.GetWindowText(hwnd):
hwnds.append(hwnd)
return True
hwnds = []
win32gui.EnumChildWindows(handle, callback, hwnds)
return hwnds[0] if hwnds else None
def click_window_center(hwnd):
x1, y1, x2, y2 = win32gui.GetWindowRect(hwnd)
x = (x1 + x2) // 2
y = (y1 + y2) // 2
win32api.SetCursorPos((x, y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)
# 查找指定句柄下符合标题的窗口
handle = 123456 # 指定句柄
title = "窗口标题"
hwnd = find_window_by_title(handle, title)
if hwnd:
# 获取窗口类名
class_name = win32gui.GetClassName(hwnd)
# 获取窗口屏幕位置并点击其中心点
click_window_center(hwnd)
x1, y1, x2, y2 = win32gui.GetWindowRect(hwnd)
print(f"句柄:{hwnd},类名:{class_name},位置:({x1}, {y1})-({x2}, {y2})")
else:
print("未找到符合条件的窗口")
```
注意:以上代码仅供参考,具体实现要根据实际情况进行调整。
阅读全文