Python PC端自动化实战:pywinauto库安装与核心操作指南

Oliver
Oliver
发布时间:2026-10-13| 3人浏览过
原创

本文详细介绍如何使用Python的pywinauto库实现PC端应用程序自动化。涵盖环境安装、Win32与UIA后端的选择策略、窗口连接方式、控件定位与内容输入、键盘模拟(含修饰符用法)及鼠标操作等核心功能,帮助开发者快速掌握桌面应用自动化测试与脚本编写技巧。

Python PC端自动化概述

一、前言

本文专门整理并分享如何使用Python进行PC端应用程序的自动化操作。

环境安装与后端选择

二、环境安装

使用Python实现PC端自动化的前提是先安装好Python环境,此外还需要引入一个第三方库:pywinauto。首先需通过以下命令安装该库:

pip install pywinauto

三、使用说明

安装完成后,具体使用说明可参考官方文档。

文档内容主要包含以下要点:

安装好Pywinauto后,首要任务是确定适用于目标应用程序的可访问性技术(即pywinauto的backend)。在Windows系统中,受支持的辅助功能技术主要有两种:

Win32 API (backend="win32"),这是默认的后端模式。

MS UI Automation (backend="uia")。

若不确定程序适用哪种backend,可借助GUI对象检查工具进行判断,常用工具包括Inspect.exe、Spy++等。这些工具使用简单便捷,建议读者自行下载学习。

四、快速入门

环境配置完成且确定后端类型后,即可使用Pywinauto模块对应用程序执行自动化操作。

应用程序连接与窗口控制

1、连接到应用程序:此处以Windows自带的计算器程序为例进行讲解。

连接应用程序需先使用pywinauto.application.Application()创建应用程序对象,随后通过以下两种方式之一进行连接:

方式一:直接通过start方法打开并操作目标应用程序。


from pywinauto import application
# 方式一:创建应用程序时可以,指定应用程序的合适的backend,start方法中指定启动的应用程序
app = application.Application(backend='uia').start('notepad.exe')

方式二:连接已打开的应用程序,可通过connect方法指定进程号进行连接。


from pywinauto import application
# 方式二:查看要打开的程序进程号,通过process指定进程号连接
app = application.Application().connect(process=19035)

运行上述代码后,系统会自动打开记事本程序,效果如下所示。

2、窗口选择

打开窗口后,若要对该窗口进行操作,需先选中该窗口。窗口选择主要有以下几种方式:


# 方式一 :不适用于窗口名为中文的
wind_1 = app.窗口名 
​
# 方式二 :窗口名可以为中文 
wind_2 = app["窗口名"]
​
# 案例使用:选择上面打开的计算器程序窗口
wind_calc = app['无标题 - 记事本']

控件定位与内容输入

3、控件操作

程序窗口中的交互元素称为控件。要对窗口内容进行操作,需先定位到对应的控件。

获取所有控件:

可通过print_control_identifiers()方法获取该窗口下的直接子控件列表,示例如下:

app['无标题 - 记事本'].print_control_identifiers()

打印结果如下所示:

上述打印内容分别对应窗口中的各个控件节点。

选择控件:

控件选择有多种方法,最简单的方式如下所示:


# 选择控件的方法
wind_calc = app["窗口名"]["控件名"]
# 案例操作:选择编辑窗口
edit = app['无标题 - 记事本']['Edit']

内容输入:

在成功选中编辑窗口后,即可进行内容输入操作。

内容输入的方法为:type_keys()。


# 在编辑栏种输入内容
edit.type_keys("柠檬班")
edit.type_keys("python自动化")
edit.type_keys("musen")

运行结果如下所示:

键盘模拟操作详解

4、键盘操作

输入上述内容后,接下来演示如何修改编辑框中的内容。

通过键盘模拟完成以下操作:全选(Ctrl+A)、复制(Ctrl+C)、粘贴(Ctrl+V)。

pywinauto.keyboard.send_keys

pywinauto模拟键盘操作,需使用pywinauto.keyboard.send_keys方法。


# 导入模块
from pywinauto.keyboard import send_keys
​
# 全选(ctrl+A)  
send_keys("^a")
​
# 复制(ctrl+C) 
send_keys("^c")
​
# 粘贴(ctrl+V)
send_keys("^v")
​
# 回车键
send_keys("{VK_RETURN}")
​
# 粘贴(ctrl+V)
send_keys("^v")

常见按键操作说明:

字母按键直接使用小写字母表示。

常用特殊按键的虚拟键码如下:

  • ESC键:VK_ESCAPE
  • 回车键:VK_RETURN
  • TAB键:VK_TAB
  • Shift键:VK_SHIFT
  • Ctrl键:VK_CONTROL
  • Alt键:VK_MENU

按键修饰符:

  • 对于常用组合键,可通过修饰符简化表示,使用更为便捷。
  • '+' 代表 {VK_SHIFT}
  • '^' 代表 {VK_CONTROL}
  • '%' 代表 {VK_MENU} (Alt键)
  • 前述全选(Ctrl+A)、复制(Ctrl+C)、粘贴(Ctrl+V)操作即使用修饰符'^'来代表Ctrl键。

更多键盘操作细节请参考官方文档。

鼠标操作与总结

5、鼠标操作

pywinauto.mouse模块

pywinauto操作鼠标需导入mouse模块,该模块提供了一系列鼠标操作事件。

鼠标移动:move方法

move(coords=(x轴坐标, y轴坐标))

缓慢移动鼠标案例:


for i in range(10):
   x = 10 * i
   y = 10 * i
   time.sleep(0.5)
   # 移动鼠标
   mouse.move(coords=(x, y))

鼠标点击:click方法


# button指定左击还是右击,coords指定鼠标点击的位置
​
# 3.1、鼠标单击
# 指定位置,鼠标左击
mouse.click(button='left', coords=(40, 40))
# 指定位置 鼠标右击
# mouse.click(button='right', coords=(100, 200))
# 3.2 鼠标双击
mouse.double_click(button='left', coords=(140, 40))
​
​
# 4 按下鼠标:press
# 将属性移动到(140,40)坐标处按下
mouse.press(button='left', coords=(140, 40))
​
# 5 释放鼠标:repleace
# 将鼠标移动到(300,40)坐标处释放,
mouse.release(button='left', coords=(300, 40))
​
# 6、右键单击指定坐标
mouse.right_click(coords=(400, 400))
​
# 7、鼠标中键单击指定坐标(很少用的到)
mouse.wheel_click(coords=(400, 400))
​
# 8 滚动鼠标
# coords:指定鼠标的坐标位置。
# wheel_dist指定鼠标滚轮滑动的次数,正数往上,负数往下。
mouse.scroll(coords=(1200,300),wheel_dist=-3)

五、说明

关于pywinauto模块的基本使用介绍至此结束,对PC端自动化感兴趣的同学可沿此方向深入学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。