pywinauto和PyUserInput实现windows程序自动化

2023-11-18

一、pywinauto

官方文档:https://pywinauto.readthedocs.io/en/latest/code/code.html

首先需要下个spy++lite,便于查看程序窗口属性

主要模块:pywinauto.application

创建对象:

app = application.Application()

启动程序:

app.start(cmd_line)    -- 传入文件绝对路径(命令行运行方式)

连接应用程序

app.connect(path = r"c:\windows\system32\notepad.exe")
app.connect(process = 1110)
app.connect(handle = 0x010f0c)             #connect替换了connect_            

关闭程序

app[window_title].close()     --窗口标题文本              #close替代了Close

窗口最大化

app[window_title].Maximize()   --窗口标题文本             #maximize替代了Maximize      

菜单点击

app.Notepad.MenuSelect(menu_name)
app[window_title].menu_select(menu_name)                #menu_select替代了MenuSelect

输入字符

app.Notepad.type_keys(content)
app[window_title][eidt_title].TypeKeys(content)         --编辑窗口标题

鼠标左击

app[window_title][button_title].click()                 #click替代了Click
app.window(title_re = window_title).window(title_re = button_title).click()    #正则匹配title;window替代了Window_

鼠标右击

app[window_title][eidt_title].right_click()             #right_click替代了RightClick

from pywinauto import application

#启动记事本并打开帮助菜单
app = application.Application()
app.start(r"C:\Windows\system32\notepad.exe")
app.Notepad.MenuSelect(u'帮助->关于记事本')
# app[u"无标题 - 记事本"].menu_select(u'帮助->关于记事本')

#定位窗口
about_dlg = app.window(title_re=u"关于",class_name="#32770")
# print(about_dlg)  #pywinauto.application.WindowSpecification object
#
# #窗口控件 -- 打印窗口控件
about_dlg.print_control_identifiers()

#点击控件
# about_dlg[u"确定"].click()
button = app.window(title_re=u"关于").child_window(title_re=u"确定")
# button = app[u"关于记事本"][u"确定"]
button.click()

输入字符
# app[u"无标题 - 记事本"][u"Edit"].type_keys(u"wejdjsaf")

右键
# app[u"无标题 - 记事本"][u"Edit"].right_click()

 

二、PyUserInput

安装流程

    1,手动安装pyHook

    根据python版本号下载对应pyHook

    3.7
    https://download.lfd.uci.edu/pythonlibs/n5jyqt7p/pyHook-1.5.1-cp37-cp37m-win_amd64.whl

    3.6
    https://download.lfd.uci.edu/pythonlibs/n5jyqt7p/pyHook-1.5.1-cp36-cp36m-win_amd64.whl
    
    pip install pyHook的本地路径

    2,pywin32
    
    3,pip install PyUserInput

from pymouse import PyMouse
from pykeyboard import PyKeyboard

m = PyMouse()
# 1、获取鼠标当前位置
print(m.position())
# 2、按下鼠标不松开, button=1(左) | 2(右) | 3(中)
m.press(5,5)
# 3、拖拽到x,y
m.drag(200,200)
# 4、移动
m.move(500,500)
# 5、松开指定位置的鼠标,button
# m.release(x,y)
# 6、点击button n次
m.click(5,5,button=1,n=2)
# 7、滚动scroll(self, vertical=None, horizontal=None, depth=None)
m.click(150,150,1,1)
m.scroll(vertical=-1)


k = PyKeyboard()
# 1、点击功能键
k.tap_key(k.function_keys[5])
# 2、按住给定的字符键
k.press_key("t")
k.press_keys(["r","t"])
# 3、联合按键:全选--按住control同时点击a
k.press_key(k.control_key)
k.tap_key("a")
# 4、释放按键
k.release_key(k.control_key)
# 5、输入较长字符串
k.type_string("afjiwaernfm,dmskame")

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pywinauto和PyUserInput实现windows程序自动化 的相关文章

随机推荐

  • Latex数学公式方程格式总结

    单行公式有自动标号 一般式子之间行距较大 begin equation T tilde nabla lim Delta v rightarrow 0 frac 1 Delta v left oint s T hat n mathrm d s
  • Java接口以及static和final关键字

    Java接口以及static和final关键字 一 static 二 final 三 让final元素可以初始化 不用固定赋值 四 接口 五 抽象方法 六 接口能够创建对象吗 匿名内部类 七 另一实例 开锁 一 static static代
  • OI考试中及平常练习里的一些低级错误总结

    long long相关 1 没开long long long long开少了 具体地 可能是未对题目可能产生的数值预估 可能是只写了int的读优 忽略long long 2 define int long long出锅 1 比如在遍历图的时
  • React中的性能优化

    1 所有的this指向都在constructor中绑定 就避免了多次绑定 this指向问题 只有当this指向我们定义的组件时才能去对state做修改 不去改变this指向 在该方法中this就指向undefined 2 setState是
  • ssm基于微信小程序的社区老人健康管理服务系统的设计与实现毕业设计源码011513

    摘要 随着现在网络的快速发展 网络的应用在各行各业当中它很快融入到了许多分类管理之中 他们利用网络来做这个社区老人健康管理服务系统 随之就产生了 社区老人健康管理服务系统 这样就让社区老人健康管理服务系统更加方便简单 对于本社区老人健康管理
  • Puzzles【Codeforces 697 D】【树形DP + 期望DP】

    Codeforces Round 362 Div 2 D 我们从1号结点开始 给每个结点标序 问的是每个结点的序号的期望是多少 输出这N个结点的期望 那么1号点的期望一定就是1了 对于其他的点呢 可以举例这样的一幅图 首先我们可以确定1 因
  • 基于UDP编程

    基于UDP编程 1 UDP是数据报协议 无连接的 不可靠 追求传输效率的一种通信协议数据的发送和接收是同步的 在进行通信之前 不需要建立连接 其传输效率比TCP高 对其服务器而言 并没有三次握手的过程 因此和TCP相比 少了被动监听 lis
  • Springboot实现发送邮件功能

    相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送 在Spring Boot的Starter模块中也为此提供了自动化配置 下面通过实例来讲解如何在Spring Boot中使用Ja
  • 发布自己的Python包(Pypi)

    发布自己的Python包 Pypi 我们经常使用 Pypi 来安装包 但是有时候我们也想要发布自己的 Pypi 包 有可能我们写了一个特别牛的包 也有可能我们只是想使用自己常用的一些轮子 可能这是我们日常编码中很常用的一些轮子 我们在不同工
  • AttributeError: 'list' object has no attribute 'shape'

    深思熟虑 运筹帷幄 疑惑 解惑 shape 是数组的属性 不是集合的属性 可把集合变成数组 如np array list A
  • 架构之道:分离业务逻辑和技术细节

    点击上方 朱小厮的博客 选择 设为星标 当当满200减40优惠码 J2KNAE 来源 阿里巴巴云原生 1 什么是架构 关于架构这个概念很难给出一个明确的定义 也没有一个标准的定义 硬是要给一个概述 我认为架构就是对系统中的实体以及实体之间的
  • [深度学习] - 网络模型训练过程的 loss 变化分析 (loss / val_loss / test_loss)

    目录 一 train set 和 test set 基础知识 二 分析 loss 和 val loss test loss 变化情况 一 train set 和 test set 基础知识 train set 训练集是用来训练网络模型的数据
  • 大数据主要应用于哪些行业,应用价值是什么?

    大数据无处不在 大数据应用于各个行业 包括金融 汽车 餐饮 电信 能源 体能和娱乐等在内的社会各行各业都已经融入了大数据的印迹 下面详细介绍一下大数据在各行各业的具体应用 制造业 利用工业大数据提升制造业水平 包括产品故障诊断与预测 分析工
  • - UnitBox An Advanced Object Detection Network,arxiv 16.08

    UnitBox An Advanced Object Detection Network arxiv 16 08 download 该论文提出了一种新的loss function IoU loss 这点比较有意思 也容易复现 论文分析了fa
  • Python之子类调用父类的两种方式

    第一种方式 直接在子类中调用父类名 调用方式如下 Vehicle init self name speed load power 调用父类的实例 Vehicle run self 调用父类的方法 下面给出具体样例 直接调用父类名 class
  • Tesseract-OCR4.0在Visual Studio2015中的编译及运行

    最近项目需要使用到OCR引擎 通过百度了解到Tesseract在这方面做的挺好的 于是便开始学习tesseract tesseract的github地址 https github com tesseract ocr tesseract 现在
  • 四种排序:选择,插入,冒泡,快速排序原理及其对应的时间、空间复杂度解析

    四种排序 选择 插入 冒泡 快速排序原理及其对应的时间空间复杂度 首先 在了解四种排序之前 让我们来了解一下什么是时间复杂度和空间复杂度 时间复杂度 算法的时间复杂度是一个函数 它定性描述该算法的运行时间 记做T n 直白的来说 就是指运行
  • SDIO 驱动

    原文地址 http blog csdn net fengyuyaoye1980 article details 6859343 SDIO卡 SDIO卡是在SD内存卡接口的基础上发展起来的接口 SDIO接口兼容以前的SD内存卡 并且可以连接S
  • 期货开户的时间和流程

    对于一些想要做期货投资的朋友来说 最基本的就是首先要进行期货开户 那就需要了解开户具体的流程和相关注意事项 一般来说了解清楚一下三点就没什么问题了 一 对开户者本人的要求 1 年满18周岁 2 中国公民 有中国公民身份证 境内储蓄卡 3 没
  • pywinauto和PyUserInput实现windows程序自动化

    一 pywinauto 官方文档 https pywinauto readthedocs io en latest code code html 首先需要下个spy lite 便于查看程序窗口属性 主要模块 pywinauto applic