Pywinauto Windows 桌面应用 Python 自动化实战
Pywinauto 是一个用于自动化 Windows 图形用户界面(GUI)的 Python 库。它允许你通过编程方式控制 Windows 应用程序,模拟用户操作(如点击按钮、输入文本、选择菜单等)。简单来说,它就是让 Python 成为你的'鼠标和键盘'。
环境准备
使用 pip 安装即可:
pip install pywinauto
安装完成后,可以通过 pip list 确认版本。
核心概念与后端选择
Pywinauto 支持两种主要的后端技术,选择合适的 backend 至关重要:
- Win32 API (backend='win32'):适用于传统的 MFC、VB6、WinForms 等老式界面。
- MS UI Automation (backend='uia'):适用于 WPF、Qt、Modern UI(UWP)等较新的界面。
大多数现代 Windows 应用推荐使用 uia 后端,兼容性更好。
常用操作流程
启动与连接应用
你可以直接启动新进程,也可以连接到已经运行的进程。
from pywinauto.application import Application
# 启动记事本
app = Application(backend='uia').start('notepad.exe')
# 连接已运行的进程(需知道 PID)
# app = Application(backend='uia').connect(process=12345)
# 或通过窗口句柄连接
# app = Application(backend='uia').connect(handle=66666)
定位窗口
定位窗口通常基于标题、类名或正则匹配。print_control_identifiers() 是个好帮手,能帮你查看窗口内部的控件树结构。
# 精确匹配
win = app.window(title='Hello,Pywinauto! - Notepad')
# 正则匹配
win = app.window(title_re='.*Notepad')
# 注意:best_match 有时会因为控件名称包含特殊字符而失效,建议优先使用 title 或 class_name
窗口状态控制
常见的窗口操作包括最大化、最小化、关闭等。
win.maximize()
assert win.is_maximized()
win.minimize()
assert win.is_minimized()
win.restore()
win.close()
控件交互
这是自动化中最核心的部分。Pywinauto 提供了丰富的控件类型,如按钮、编辑框、列表等。
定位控件
除了使用 child_window,还可以利用 输出的信息来辅助定位。


