Skip to content

API: UIA Window ​

窗口(Window)控件代表应用程序的主窗口、对话框或弹出窗口。

获取窗口 ​

获取前台窗口 ​

说明:获取当前活动窗口的 UI 根元素。这是最常用的方式。

函数签名:

python
from_foreground() -> UIElement | None
lua
from_foreground() -> UIElement | nil
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

从窗口句柄获取 ​

说明:如果已经知道窗口句柄(HWND),可以直接获取其 UI 根元素。

函数签名:

python
from_window(hwnd: int) -> UIElement | None
lua
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()获取窗口内的子元素