程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python 自动控制任何软件 ...

hfteth 2024-12-29 00:51:58 技术文章 13 ℃

最近的项目需要用一个软件批量生产出一些文件,但是这个软件并没有提供二次开发接口。这也难不倒我们强大的 Python!

先介绍一个 Python 库 pywinauto。它可以实现 Windows 的界面自动化,可以对窗口和控件进行操作,而且非常简单。

pywinauto 实现了两套引擎 win32 和 UIA(UI Automation)。win32 引擎是利用了界面控件的 win32 消息进行交互,标准 Windows 程序的控件都能支持这些消息。UIA 是一套无障碍接口,给盲人用的读屏软件和界面测试软件都会用到此接口。UIA 是 COM 接口,几乎所有语言都能调用它。通过 UIA 在界面上取得信息,也能操作界面的控件。国外的比较有名的软件都会支持这两种接口,或者支持其中一个。国内软件,几乎不支持。

首先安装 pywinauto

pip install pywinauto

导入需要的库

from pywinauto import application
from pywinauto.keyboard import send_keys

启动一个记事本

app = application.Application()
app.start(r"notepad.exe")
app['Notepad'].wait('ready')

在记事本里输入一些文字

app['Notepad']['Edit'].set_edit_text("测试自动化输入 abc")

选择文件菜单退出记事本

app['Notepad'].menu_select("文件(&F)->退出")

退出时,由于文件没保存会有个提示框。

我们这里选“不保存”,看到按钮上那个带下划线的 N 了吗?它的意思是按 Alt + N 就可以启动那个按钮。下面我们模拟按键 Alt + N 退出程序。 pywinauto 使用 % 来代替 Alt。

send_keys("%N")

上面只是一些简单的测试,如果要想真正把这个库用起来,还是需要 Win32 底层的开发知识和 COM 编程知识。Python 只是胶水,把这些技术串在一起。但是,使用 Python 还是极大地提高了开发效率。

如果喜欢,请关注一下吧!

最近发表
标签列表