AutoIt:AutoIt比我想象的更加强大
2024-09-30 02:43:06
前段时间,我一直认为,通过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 控件。
最新文章
- 【腾讯bugly干货分享】微信Android热补丁实践演进之路
- EF DbContext 并发执行时可能出现的问题
- Mybatis 复习 Mybatis 配置 Mybatis项目结构
- Keep-Alive 总结
- jsonp跨域问题
- clock gating and PLL
- Socket通信(转)
- [Asp.net]说说密码框和只读框
- buffer busy waits
- ado.net数据库操作(2)
- TCP/IP的网际层协议——ARP
- 湘潭oj1203/邀请赛A称号 数论+java睑板
- JS滚动加载
- Java代码风格和在idea中的一些设置
- mac上安装vue项目
- java.io.IOException: There appears to be a gap in the edit log. We expected txid ***, but got txid
- 分享几个写 demo 的思路
- MongoDB——待整理
- 200. Spring Boot JNDI:在Tomcat中怎么玩JNDI?
- 关于mysql的删除和安装