API: UIA Window
窗口(Window)控件代表应用程序的主窗口、对话框或弹出窗口。
获取窗口
获取前台窗口
说明:获取当前活动窗口的 UI 根元素。这是最常用的方式。
函数签名:
python
from_foreground() -> UIElement | Nonelua
from_foreground() -> UIElement | nilpython
from wingman import uia
# 获取前台窗口
root = uia.from_foreground()
if root:
info = root["get_info"]()
print(f"窗口名称: {info.get('name', '')}")
print(f"角色: {info.get('role', 0)}") # 1 = UIARole Window从窗口句柄获取
说明:如果已经知道窗口句柄(HWND),可以直接获取其 UI 根元素。
函数签名:
python
from_window(hwnd: int) -> UIElement | Nonelua
from_window(hwnd: number) -> UIElement | nil参数:
hwnd- 窗口句柄
python
from wingman import window, uia
# 先查找窗口句柄(返回数组 [handle, found],Python 列表解包可用)
hwnd, found = window.find("记事本")
if found:
# 从句柄获取 UI 根元素
root = uia.from_window(hwnd)
if root:
print("记事本 UI 根元素获取成功")查找子窗口/对话框
说明:某些应用包含多个子窗口或对话框。
python
from wingman import uia
# 查找所有 Window 角色(UIARole 1)的控件
windows = uia.find_all_by_control_type(1)
print(f"找到 {len(windows)} 个窗口:")
for win in windows:
info = win["get_info"]()
print(f" - {info.get('name', '(无名称)')}")等待对话框出现
说明:对话框可能需要时间加载,可以轮询等待。
python
from wingman import uia
# 等待对话框出现(最多 3 秒)
dialog = uia.wait_for_name("设置", 3000)
if dialog:
info = dialog["get_info"]()
if info.get('role', 0) == 1: # 1 = UIARole Window
print("找到对话框窗口")窗口属性
说明:获取窗口的各种属性信息。
python
from wingman import uia
root = uia.from_foreground()
if root:
info = root["get_info"]()
print(f"窗口标题: {info.get('name', '')}")
print(f"角色: {info.get('role', 0)}") # 1 = UIARole Window
print(f"是否可见: {info.get('is_visible', True)}")
print(f"是否启用: {info.get('is_enabled', True)}")
# 位置和大小
if 'bounds' in info:
rect = info['bounds']
print(f"位置: ({rect['x']}, {rect['y']})")
print(f"大小: {rect['width']} x {rect['height']}")可用接口
获取窗口
| Python 函数 | Lua 函数 | 说明 |
|---|---|---|
from_foreground() | from_foreground() | 获取前台窗口 |
from_window(hwnd) | from_window(hwnd) | 从句柄获取窗口 |
from_point(x, y) | from_point(x, y) | 从坐标获取窗口元素 |
窗口操作
| Python 方法 | Lua 方法 | 说明 |
|---|---|---|
get_info() | :get_info() | 获取窗口信息 |
get_children() | :get_children() | 获取窗口内的子元素 |