pywinauto:同时支持控件操作和图像操作,支持Win32 API和MS UI Automation API
A set of Python modules to automate the Microsoft Windows GUI
python3环境(python3.5以上)
pip环境
$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywinauto
MFC,VB6,VCL简单的WinForms控件和大多数旧的应用程序
WinForms,WPF,Store apps,Qt5,浏览器
Application
作用范围是一个进程
Desktop
作用范围可以跨进程
from pywinauto.application import Application
# 打开指定的应用程序
# 1. 打开windows自带的应用
app = Application(backend='uia').start("notepad.exe")
# 2. 打开任意一个应用程序
app = Application(backend='uia').start("exe路径")
通过进程号
通过窗口句柄
app = Application('uia').connect(process=4444)
app = Application('uia').connect(handle=1904040)
# 方式一:app[类名/标题] :推荐使用该方式
# 1.通过窗口类型来选择
dlg = app["TNavicatMainForm"]
# 2.通过窗口标题来选择
dlg = app["Navicat for MySQL"]
# 方式二:app.类名
dlg =app.TNavicatMainForm
dlg.print_control_identifiers()
# 窗口最大化
dlg.maximize()
# 窗口最小化
dlg.minimize()
# 窗口恢复正常大小
dlg.restore()
# 查找窗口显示状态,最大化为1,正常为0
status = dlg.get_show_state()
# 获取当前窗口的坐标位置
rect = dlg.rectangle()
print(rect)# (L548,T194,R1768,B1043)
# 关闭窗口
dlg.close()
控件:窗口上的内容
# 选择控件
# menu = dlg.Menu
menu = dlg["Menu"]
print(menu.print_control_identifiers()) # 查看Menu上的控件
file = menu.child_window(title="文件", control_type="MenuItem")
file.print_control_identifiers()
状态栏 StatusBar
按钮 Button
单选框 RadioButton
组合框 ComboBox
编辑栏 Edit
列表框 ListBox
弹出菜单 PopupMenu
工具栏 Toolbar
树状视图 Tree View
菜单项 MenuItem
静态内容 Static
复选框 CheckBox
组框 GroupBox
对话框 Dialog
头部内容 Header
列表显示控件 ListView
选项卡控件 TabControl
工具提示 ToolTips
菜单 Menu
窗格 Pane
文章浏览阅读730次。$finish 在进行电路仿真时,如果遇到$finish,仿真器完成仿真并退出。$finish语句通常放到testbench的顶层文件中,如果testbench_top.v是顶层仿真文件,那么$finish应出现在仿真结束时刻。$stop 当遇到$stop时,仿真器 停止仿真,但不退出,它同事提供一个命令提示符,在命令提示符后面输入“.”,则仿真过程继续进行。..._testbench finish
文章浏览阅读264次。“我正在尝试设置STF(SmartPhone测试服务器场),但在终端i中安装NPM并触发命令”npm install -g stf“我遇到了以下错误 . “ 在此处输入代码sh-3.2 #npm install -g stfnpm WARN不推荐使用[email protected]:改为使用uuid模块/ usr / local / bin / stf - > / usr / local ..._error path /usr/local/node/lib/node_modules/stf/node_modules/bufferutil
文章浏览阅读156次。Mybatis-Generator代码生成器官方文档加入依赖: <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> &l_代码生成器
文章浏览阅读1.5k次。可用来定义预格式化的标签_是什么标记
文章浏览阅读2.7k次。InstallAnywhere 简介(摘自百度百科&VeryCD)一个为多个平台产生的全方位的安装软件为多个平台提供解决方案是对软件生产商的一种挑战。许多解决方案都依赖于针对每种目标操作系统的自定义安装,它们都拥有自身的安装体验且需要单独的维护。所有这些问题都增加了额外的开发费用和支持成本、客户混淆度以及发布过程中不必要的时间浪费。理想的部署软件解决方案应为这些生产商提供一种方法来_installanywhere下载
文章浏览阅读930次。【代码】C/C++编程:状态机的驱动表。_状态机表格驱动法
文章浏览阅读1.6k次。五月 07, 2017 5:30:03 下午 org.apache.catalina.core.AprLifecycleListener init信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on t_caused by: there is no result type defined for type 'json' mapped with name
文章浏览阅读1.7k次。背景本地clone了一份代码,修改了一个文件内容,修改太多,想放弃.重新获取一份未修改前的代码.解决方案鼠标右击-> 打开 -> Git Bash Here (窗口如下)输入: git reset --hard HEAD分析解决方案git reset --hard HEAD 表示回退到当前版本, HEAD指向当前版本.如果你修改了一些代码,想去除,就可以使用 git reset --hard HEAD一次性去除.git reset --hard HEAD^表示回退到上一_本地删除的文件怎么从git上拉取
文章浏览阅读453次。最近为了面试,疯狂刷题,当我遇到这个题;大脑已经崩塌,我开始钻牛角尖了,怎么办??? 干了这杯苦酒,下辈子不当程序员!!!先上题目: const chain=new Chain(); chain.eat().sleep(5).eat().sleep(6).eat().work() 输出结果是: console.log(eat->sleep(5)->eat->sleep(6)->eat-work);其实吧,题目很简单,只要class的方法返回自身就行;先上我的代码c._class里面不能用console
文章浏览阅读1.4k次,点赞4次,收藏8次。# 基本信息import numpy as npimport pandas as pdfrom pandas import Series, DataFrame# 股票数据读取import pandas_datareader as pdr# 可视化import matplotlib.pyplot as pltimport seaborn as sns#%matplotlib inline# timefrom datetime import datetimestart = dat_数据分析与智能处理实践 股票趋势分析
文章浏览阅读392次。效果图原理根据802.11协议,发现热点使用的是广播,并且是明文,所以在混杂模式下发送beacon帧或者在接收到Probe request之后返回Probe response即可模拟一个热点,接收到Association request 或者其它请求可以不用理会,这里的目的只是生成一个假热点,不会实现连接认证等步骤可以在这里查看相关资料,也可以百度beacon帧格式WiFi的帧格式如下:802.1..._linux device wifi 创建的热点 老是无法加入网络
文章浏览阅读1.2k次。在嵌入式开发中,可以使用c标准库自带的库函数,而不用自己去早轮子,qsort和bsearch就是其中的两个比较好用的二分法查找,前提是已经排序好的数据。下面的代码,如果数据为排序,则要进行排序后,再查找。/* bsearch example */#include <stdio.h> /* printf */#include <stdlib.h> ..._stm32 qsort调用