听说你用的是 Windows 系统,盘它!

共 1871字,需浏览 4分钟

 ·

2024-04-10 17:58

本文阅读需要约 3 分钟

6882f2eeb2bb0a3535ee17931b9b3a17.webp 小帅b 

小帅b之前分享过 pyauogui, 你可以使用它帮你操作一些重复的操作。

今天给你分享的也是自动化的库 —— pywinauto,这个适合在你的 Windows 系统操作,它可以用代码控制你的鼠标和键盘,关键是它可以更精准的获取你要操作的组件。

那么怎么玩呢?

接下来就是学习 Python 的正确姿势。

87a8756bd231cb7fb6eb02357636b0af.webp

首先你需要安装 pywinauto:

pip install -U pywinauto

安装好之后你就可以造了。

6ceb865a43afa34efbaff6da29e35402.webp

比如你要通过代码打开你的 Pycharm ,那么你就可以这样:

from pywinauto import Application

pycharm_ p ath = r"D:\PyCharm Community Edition 2023.2.2\bin\pycharm64.e xe"  

app = Application(backend="uia").start(pycharm_ path)

这里使用了 Pywinauto 库中的 Application 类的 start() 方法来启动 PyCharm 应用程序。

backend="uia" 参数指定了使用 UI Automation 技术来与应用程序进行交互。

运行起来就会自动打开 Pycharm:

26d7ee5900ba6ba39bd42fea67df61ae.webp

好家伙,在 vscode 打开 Pycharm 是吧!

fc0eef3bfa35c883c1b282a329e8cd9d.webp

你还可以让它直接在里面写东西:

5a947fa7f41c9bfe8d96f2c177c2c155.webp

运行起来就是这样的:

1decded4d7151b1a815184355d8e91e5.webp

其实关键就是要找到你要操作的窗口,然后去做一些具体的操作。

这里就再介绍一个神器 ——— SWAPY。

96a5deff80e5aed3e14f17ebf767bb98.webp

运行起来你会发现它可以监听到你在电脑上运行的窗口:

54800d78c2b87f917e0d17cc033a5fe1.webp

你可以单击你想要操作的程序,右下角就会显示这个程序相应的参数值:

058b12555f46c9df4e0bfeaacd24076c.webp

比如我刚刚要操作 Pycharm 的窗口,就可以这样:

app = Application().Connect(title=u'pythonProject \u2013 main.py', class_name='SunAwtFrame')

贴心的是,你只要对着你要操作的程序窗口点击右键,然后点击连接,它右上角直接帮你生成的连接代码:

8a4b2c18363dc1f24a07459c8c130e7f.webp

这样你就再也不用一边写代码一边去找窗口的属性了。

我把 SWAPY 放在以下这里了,你可以自行下载使用:

https://pan.quark.cn/s/4d617f275f3c

pywinauto 的鼠标和键盘操作

和 Pyautogui 类似,你可以使用 click 的相关方法对鼠标进行操作:

e01bf04a8bc593c3b0ef9c9edabe1845.webp

键盘操作如下:

5df0bcfce24858947214e52181a0b7c0.webp

'+': 代表 SHIFT

'^': 代表 Ctrl

'%': 代表 ALT

比如这样 send_keys('^a^c') 就是 Ctrl+A。

官方文档在这:

h t tps: //pyw inauto.readthed ocs .io/

pywinauto 获取数据

最后再额外说一下, pywinauto 还可以获取数据。

比如获取你记事本的内容,那么就可以这样:

      # 启动记事本应用程序
 app = Application().start("notepad.exe")
 time.sleep(1)
 # 选择记事本主窗口
 main_window = app.window(title="无标题 - 记事本")
 # 获取编辑框控件并获取文本内容
 edit_control = main_window.Edit
 text = edit_control.window_text()
 print("记事本文本内容:", text)


OK, 那么以上就是小帅b今天给你带来的分享,希望对你有帮助。

推荐阅读:

小帅b公众号那些不为人知的关键词

先别加入VIP,过两天有动作!

记得将我的公众号设为✨星标,觉得本文还不错的话就来个三连,谢啦~

我们下回见,peace!

浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报