通过标题 找到 指定句柄下 子窗口或 孙窗口 范围其 句柄和 屏幕位置 并点击 其中心点
时间: 2024-03-16 19:42:09 浏览: 160
可以使用Python `win32gui`模块的 `FindWindow`, `FindWindowEx`, `GetWindowRect`和 `SetCursorPos`函数来实现。
以下是一个例子:
```python
import win32api
import win32gui
# 获取主窗口句柄
handle = win32gui.FindWindow(None, "窗口标题")
# 获取子窗口或孙窗口句柄
child_handle = win32gui.FindWindowEx(handle, None, "子窗口类名", "子窗口标题")
# 获取句柄的屏幕位置
rect = win32gui.GetWindowRect(child_handle)
x = rect[0] + (rect[2] - rect[0]) // 2
y = rect[1] + (rect[3] - rect[1]) // 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)
```
请注意,您需要将窗口标题,子窗口类名和子窗口标题替换为实际的值。如果窗口没有子窗口,`FindWindowEx`函数将返回`None`。
相关问题
python 通过 标题 找到 指定句柄下 符合标题的 窗口 返回 其句柄和屏幕位置 类名 并点击其中心点
可以使用 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("未找到符合条件的窗口")
```
注意:以上代码仅供参考,具体实现要根据实际情况进行调整。
阅读全文