按键精灵键盘脚本 Python模拟按键精灵

11/28 10:13:36 来源网站:seo优化-辅助卡盟平台

按键精灵键盘脚本 Python模拟按键精灵

前言熟悉windows程序自动化的同学或是经常打游戏的同学应该知道“按键精灵”这款软件,它的主要功能是模拟鼠标键盘操作,对需要定时或不定时对某特定区域点击或发送某些命令时,这个软件十分有用,它中文化的编程模式虽然看起来有点怪异,但对于基本的循环判断都是有实现的,稍加修正也可以完成较复杂的任务。那么做为胶水语言的Python中有没有与这功能类似的第三方包呢?答案是肯定的,那就是pywinauto,从它的名字就可以看出,这是用python对windows进行自动化操作的工具包。注意:这个包只是在windows下使用!安装熟悉python第三方包安装的同学应该可以很容易用pip命令进行安装,即在命令行输入以下代码即可:

pip install pywinauto

pip命令会根据pywinauto的需求安装其相应依赖的包,比如pyWin32、comtypes、six、Pillow等,其中Pillow是可选的,在需要截图时会调用该包。基本用法在介绍用法之前,首先需要介绍一下pywinauto模块中两个名词:Dialog——指的是包含GUI元素比如按钮、编辑框等的一个窗口,它不一定是主窗口,可以是一个弹出式对话框;Control——指的是GUI元素,比如window、button、edit box等等。导入模块

from pywinauto.application import Applicationimport pywinauto.mouse as mouseimport pywinauto.keyboard as keyboard

启动一个程序启动软件可直接用Application的start()方法,比如我们来启动一下windows自带的记事本软件:

app = Application().start("c:/windows/system32/notepad.exe")

当运行上述代码时,我们可以立刻看到记事本软件被打开。访问对话框在打开记事本后,我们需要获取记事本的窗体,这时可以先来看一下,当前调用上述命令后启动的窗体有哪些:

app.windows()

输出:[1049854>,000001CB287A0000:10000, 1573262>,000001CB287A0000:10000, 1049508>,721494>,655836>,263078>]

从打印的结果可以看出,伴随着记事本启动的还有几个输入法窗体,为了得到记事本窗体,需要调用以下代码:

dlg = app['无标题 - 记事本']

在这里为了得到记事本的窗体,必须要引用记事本当前的名字,这里的名字叫'无标题 - 记事本',因此我们在调用该窗体时,需要将该名字传递给app变量,当然如果文本文件的名字很长,我们可以用正则表达式来抓取:

dlg = app.window(title_re=".*记事本.*")

控件下一步就是要查明当前窗体有哪些可用的控件,这可用以下代码来打印:

dlg.print_control_identifiers()

从上述打印的信息,可以看出当前窗体的信息,注意每个窗体后面都有一些类似(L489, T504, R1734, B968)的信息,这是它的坐标位置(left, top, right, bottom)。

让我们通过程序调用记事本的菜单来将记事本的状态栏隐藏:

dlg.menu_select("查看 -> 状态栏")

如图所示,当上述代码运行后,记事本的状态栏就消失不见,当然再运行一次上述代码,其状态栏会重新显示。

我们下面演示一下调出记事本的替换窗口再将其取消,代码如下:

dlg.menu_select("编辑 -> 替换(R)")app.window(title="替换")["取消"].click()

注意:上述代码调用时,要首先查找出弹出窗口,其次在弹出窗口中寻找取消按钮,再发送点击命令。下面我们再向记事本发送一些文本,比如在文本中写上:活着挺好。hello World!,代码如下:

    暂无相关资讯
按键精灵键盘脚本 Python模拟按键精灵