AutoIt:AutoIt比我想象的更加强大
前段时间,我一直认为,通过AutoIt进行自动化操作,也只有几个方法可以用,它们只是controlClick, controlsend等如下图:

我一直认为,AutoIt的所有的GUI 方法,都是用来创建界面使用的。
今天,开发找我,让我把他的一个GUI页面上所有的资源获取下来:
页面上一个ListView中,一共有大约70个list,我现在需要遍历这70个list,然后当该list获取焦点的时候,右键点击,然后在弹出框中点击第二个选项,从而保存图片?
我一直期待能找到一个函数,比喻:ControlGetFocusPos,可是没有这个函数,mouseGetPos函数只能获取鼠标所在的位置,google搜索也得不到想要的答案。

问题最终还是被我解决了:
1. 遍历每个list的位置坐标X, Y;
2. 在该坐标上右键点击;
3. 用键盘上的Down和Enter键,点击弹出框的第二个按钮;
4. 保存相应资源
具体代码如下:
#include <GuiListView.au3>
;获取窗口句柄
$handle = WinGetHandle(".NET Reflector 6")
WinActivate($handle)
;获取控件句柄;
$control = ControlGetHandle($handle,"","WindowsForms10.SysListView32.app.0.232467a_r11_ad11")
;获取列表中List数目
$count = ControlListView($handle,"",$control,"GetItemCount") for $i = to
;获取位置信息
$x = _GUICtrlListView_GetItemPositionX($control, $i-)
$y = _GUICtrlListView_GetItemPositionY($control, $i-) ControlClick($handle,"", $control,"right",, $x, $y)
ControlSend($handle,"",$control,"{down 2}{enter}")
WinWait("Save As")
WinWaitActive("Save As")
$handle2 = WinGetHandle("Save As")
ControlSetText($handle2,"", "Edit1", "C:\Users\chenpassion\Desktop\Autoit\pic\" & $i & ".png")
ControlClick($handle2,"","Button1")
WinWaitClose("Save As")
ControlSend($handle,"",$control,"{down}")
Next
看来又有得深入学习了!
_GUICtrl***函数,是非常强大的,可以做更多的识别页面元素,操作Windows GUI 控件。
AutoIt:AutoIt比我想象的更加强大的更多相关文章
- 讲透JAVA Stream的collect用法与原理,远比你想象的更强大
大家好,又见面了. 在我前面的文章<吃透JAVA的Stream流操作,多年实践总结>中呢,对Stream的整体情况进行了细致全面的讲解,也大概介绍了下结果收集器Collectors的常见用 ...
- selenium+java利用AutoIT实现文件上传
转自https://www.cnblogs.com/yunman/p/7112882.html?utm_source=itdadao&utm_medium=referral 1.AutoIT介 ...
- selenium 用autoIT上传下载文件
一.下载安装AutoIT 下载并安装AutoIT,下载链接:https://www.autoitscript.com/site/autoit/ AutoIT安装成功后,可以在开始菜单下看到AutoIT ...
- 强大的css3
强大的css3 我们知道,这几年来智能手机的高速发展使得人们使用移动端上网的时间和人数已经超过了PC端.例如在2015年,就中国电商而言,各电商平台在移动端持续发力,移动端购物占比不断攀升,双11期间 ...
- cxgrid强大用法
cxgrid强大用法 (2012-07-25 14:09:42) 转载▼ 标签: delphi cxgrid 用法 强大 杂谈 分类: Delphi cxGrid功能强大,适合做企业级的复杂查询.非常 ...
- 抛弃jQuery:DOM API之选择元素
原文链接:http://blog.garstasio.com/you-dont-need-jquery/selectors/ 我的Blog:http://cabbit.me/you-dont-need ...
- jQuery中的100个技巧
1.当document文档就绪时执行JavaScript代码. 我们为什么使用jQuery库呢?原因之一就在于我们可以使jQuery代码在各种不同的浏览器和存在bug的浏览器上完美运行. < ...
- jQuery 中的 39 个技巧
1.当document文档就绪时执行JavaScript代码. 我们为什么使用jQuery库呢?原因之一就在于我们可以使jQuery代码在各种不同的浏览器和存在bug的浏览器上完美运行. <sc ...
- PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转
[强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...
随机推荐
- 转: MySQL索引原理及慢查询优化 (from 美团技术博客)
转: http://tech.meituan.com/mysql-index.html MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色, ...
- openssl之EVP系列之11---EVP_Verify系列函数介绍
openssl之EVP系列之11---EVP_Verify系列函数介绍 ---依据openssl doc/crypto/EVP_VerifyInit.pod翻译和自己的理解写成 (作者 ...
- XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。
示例Xml: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <?xml versio ...
- navicat小经验和快捷键
1.有时按快捷键Ctrl+F搜某条数据的时候搜不到,但是能用sql查出来,这是怎么回事? Ctrl+F只能搜本页数据,不在本页的数据搜不到,navicat每页只显示1000条数据.在数据多的时候nav ...
- react className 有多个值时的处理 / react 样式使用 百分比(%) 报错
1.react className 有多个值时的处理 <fieldset className={`${styles.formFieldset} ${styles.formItem}`}> ...
- 修改 本地 IP 及 正则表达式 test exec match 的区别
修改 IP 1.打开 "打开网络和共享中心" 2.打开 "更改适配器设置" 3.打开 "本地连接" 属性 4.修改 "协议版本 4 ...
- 【网络协议】TCP的流量控制机制
一般来说,我们总是希望传输数据的更快一些,但假设发送方把数据发送的非常快.而接收方来不及接收,这就可能造成数据的丢失.流量控制就是让发送方的发送速率不要太快.让接收方来得及接收. 对于成块数据流,TC ...
- 基于multiprocessing和threading实现非阻塞的GUI界面显示
========================================================= 环境:python2.7.pyqt4.eric16.11 热点:multiproce ...
- pandas-数据分析
pandas是一个强大的python数据分析的工具包 pandas是基于numpy构建的 pandas的主要功能: 具备对其功能的数据结构DataFrame.Series 集成世间序列功能 提供丰富的 ...
- openwrt spi flash 分区适配过程
openwrt spi flash 分区适配过程 这里基于 openwrt mt7620a 平台来跟踪,主要是想理清 dts 里的分区描述是如何一步步转化成内核分区行为. 先来看看 dts 中关于分区 ...