构造与窗口绑定

构造与窗口绑定

直接绑定 HWND

auto = WinAuto(hwnd)                  # 默认 auto 模式(自动选择)
auto = WinAuto(hwnd, mode='uia')      # 推荐:UIA 控件操作(通用)
auto = WinAuto(hwnd, mode='mouse')    # 物理鼠标/键盘(通用)
auto = WinAuto(hwnd, mode='post')     # 后台 PostMessage(仅部分原生 ClassName 有效)
auto = WinAuto(hwnd, delay=0.2)       # 每次操作后等待 0.2 秒

按类名 + 标题包含查找(推荐)

适合弹窗、动态标题(例如标题含「聊天记录」)。控件浏览器默认生成此写法:

WIN_CLASS = 'Qt51514QWindowIcon'
WIN_TITLE_KEY = '聊天记录'  # 标题包含即可
hwnd = WinAuto.find_hwnd(WIN_CLASS, WIN_TITLE_KEY)
auto = WinAuto(hwnd, mode='uia')
time.sleep(0.3)

# 快捷构造
auto = WinAuto.from_find_hwnd(WIN_CLASS, WIN_TITLE_KEY, mode='uia')

按类名 + 标题全等查找

标题须与任务栏显示一致(strip 后全等):

TARGET_CLASS = 'YourMainWndClass'
TARGET_TITLES = ('目标应用', 'MyApp')

hwnd = WinAuto.find_main_hwnd(
    TARGET_CLASS,
    TARGET_TITLES,
    find_window_name=TARGET_TITLES[0],
)
auto = WinAuto.from_main_hwnd(TARGET_CLASS, TARGET_TITLES[0], mode='uia')

切换窗口

auto.bind(new_hwnd)       # 绑定新 HWND
auto.set_mode('uia')      # 修改全局模式

API 参考

模式常量

from chatautox import MODE_AUTO, MODE_UIA, MODE_POST, MODE_MOUSE
# 等价字符串:'auto' | 'uia' | 'post' | 'mouse'
模式说明测试工具注意
autoUIA → Post → 物理,自动降级业务脚本可用;测单一路径请用明确模式
uiaUIA Invoke / SendKeys / TextPattern需传入 UIA 控件;不支持 hotkey()
postPostMessage 后台点击/按键各模式互不降级;自定义控件(mmui/D3D)常无效
mouse物理鼠标/键盘需窗口在前台

构造与窗口绑定

✨WinAuto

构造 WinAuto 实例,绑定目标窗口并设置默认操作模式。

auto = WinAuto(12345, mode='uia', delay=0.2)
auto.click(name='确定').sleep(0.5).input('hello', aid='editor')

参数

参数名类型默认值描述
hwndint0目标顶级窗口句柄;0 表示尚未绑定
modestr'auto'默认操作模式,可被单次调用的 mode= 覆盖
delayfloat0.1每次操作后默认等待秒数

返回值

  • 类型:WinAuto
  • 描述:实例本身,支持链式调用

✨find_hwnd

枚举可见顶层窗:标题包含 title_key,可选类名精确匹配(静态方法)。比 find_main_hwnd 更适合弹窗与动态标题。

hwnd = WinAuto.find_hwnd('Qt51514QWindowIcon', '聊天记录')
auto = WinAuto(hwnd, mode='uia')

参数

参数名类型默认值描述
class_namestr | NoneNone顶级窗口 ClassName;有标题关键词时类名仅作优选,不强制
title_keystr | NoneNone标题包含匹配关键词;与 class_name 至少提供一个
prefer_hwndint0若仍可见且匹配则优先使用(刷新/调试)

返回值

  • 类型:int
  • 描述:匹配 HWND;无匹配抛 RuntimeError

✨from_find_hwnd

查找窗口并构造 WinAuto。等价于 WinAuto(find_hwnd(...), mode=mode, ...)

auto = WinAuto.from_find_hwnd('Qt51514QWindowIcon', '聊天记录', mode='uia')

✨find_main_hwnd

按类名与标题查找顶级窗口 HWND(静态方法)。标题 strip 后全等匹配。

hwnd = WinAuto.find_main_hwnd('Chrome_WidgetWin_0', ('笔记',), find_window_name='笔记')
auto = WinAuto(hwnd, mode='uia')

参数

参数名类型默认值描述
class_namestr顶级窗口 ClassName(精确匹配)
titlesstr | tuple | list允许的窗口标题集合(strip 后全等匹配)
find_window_namestr | NoneNone枚举无结果时,FindWindow 回退标题
find_window_timeoutfloat3.0回退轮询超时(秒)

返回值

  • 类型:int
  • 描述:匹配 HWND;无匹配抛 RuntimeError

✨from_main_hwnd

查找窗口并构造 WinAuto(静态方法)。等价于 WinAuto(find_main_hwnd(...), mode=mode, delay=delay)**kw 传给 find_main_hwnd

auto = WinAuto.from_main_hwnd('Notepad', '无标题 - Notepad', mode='uia')

参数

参数名类型默认值描述
class_namestr顶级窗口 ClassName
titlesstr | tuple | list允许的窗口标题集合
modestr'auto'默认操作模式
delayfloat0.1每次操作后默认等待秒数
**kw传给 find_main_hwnd 的额外关键字参数

返回值

  • 类型:WinAuto

✨bind

切换绑定窗口,返回 self 以链式调用。

auto.bind(new_hwnd)

参数

参数名类型默认值描述
hwndint新的顶级窗口句柄

返回值

  • 类型:WinAuto

✨set_mode

修改全局操作模式,返回 self 以链式调用。

auto.set_mode('uia')

参数

参数名类型默认值描述
modestr操作模式:'auto' | 'uia' | 'post' | 'mouse'

返回值

  • 类型:WinAuto

上一页控件获取下一页查找与点击