ControlClick 无法处理SysLink类的button[已解决]
本帖最后由 左手l右手r 于 2014-4-3 09:38 编辑写一个安装包的自动安装脚本,该安装包一个UI上有一个控件,用AutoIt V3窗口信息工具查看其类型是SysLink类型,窗口标题:Advantech DAQNavi - Install Wizard,该控件类型SysLink,高级模式值:CLASS:SysLink; INSTANCE:2, 该控件的ID是1011.
脚本1:
;ControlClick('Advantech DAQNavi - Install Wizard','','','left',1)
脚本2:
ControlClick('Advantech DAQNavi - Install Wizard','',1011,'left',1)
用这两种都没法模拟鼠标左键点击一下,请问高手们帮忙看看,为什么?
本帖最后由 131738 于 2014-3-31 17:04 编辑
回复 1# 左手l右手r
" 控件的ID是1012 "
截图中的 ID 是 1011 吧.....
第 1 参数试试用句柄...
修改窗口函数执行搜索时的标题匹配模式.
1 = (默认值)匹配标题的开始部分
2 = 匹配标题的任意子串
3 = 完全匹配标题
4 = 高级模式,详情请查看 窗口标题与文本 (高级)
-1 到 -4 = 根据其它类型匹配不区分大小写的匹配. 回复 2# 131738
嗯嗯,写错了,控件的ID应该是截图中的1011.
已经试了,参数1用窗口的句柄也不行呀,脚本如下所示:
$handle = WinWaitActive("Advantech DAQNavi - Install Wizard","")
$installclick = ControlClick($handle,'',1011,'left',1)
还是跟没点击一样,但是经调试发现,handle的值对着呢,返回的值与用窗口信息工具查看的值一模一样,而且返回的installclick 也是1,说明ControlClick的执行没有问题,但是却没反应。 本帖最后由 左手l右手r 于 2014-4-1 09:54 编辑
回复 2# 131738
我晕呀,问题变向了,原来这个UI是嵌套窗口,一直拿到的这个窗口标题(Advantech DAQNavi - Install Wizard)和handle 是父窗口的,而这个控件是在其子窗口上,子窗口是无边框(且无Title)的那种,嵌在父窗口上,所以,怪不的执行不了,controlclick指定的父窗口的标题或handle,而控件却在子窗口上,OK,这个问题解决了,但是新的问题来了,请问下,我如何能拿到子窗口的handle呢? 回复 4# 左手l右手r
这个可以捕捉父窗
http://www.autoitx.com/forum.php?mod=viewthread&tid=17882&fromuid=161 回复 5# 131738
咦,这个是个好东西,谢谢你,特别感谢! 本帖最后由 左手l右手r 于 2014-4-3 09:39 编辑
昨天在问题仔细的查了一遍资料,最后发现我自己把问题想太复杂了,因为习惯用controlclick这个函数,又不太熟悉autoit,老觉得我这个控件因为是syslink类型,所以controlclick函数无法处理这种控件,今天早上突然开窍了,既然我能拿到这个控件的坐标,那何不用MouseClick这个函数呢?直接指定坐标,模拟鼠标点击,就ok了,实在太高兴了。;程序最前面指定鼠标的坐标模式
Opt("MouseCoordMode",0)
;然后用窗口探测器,得到这个空间的客户区坐标,即相对于激活窗口的坐标
$pos = ControlGetPos($windowhandle, "",1011)
; 测试发现,用这个pos和pos的坐标,鼠标没有变成手形状,应为我的UI上sysylink这个按钮,当鼠标移至上面,会变成手型,因此在移动下
$pos = $pos+5
$pos = $pos+5
;最后用MouseClick,成功跳转到link的指定页面啦
MouseClick("left", $pos, $pos, 2)问题解决,谢谢@131738的论坛元老,谢谢你哦~
饶了一圈,发现自己把问题想的太复杂了,希望我这个菜鸟的思路对大家有用,自己改处于摸索的阶段,不过在搜寻syslink的学习中,也学到了不少知识,尤其是网页syslink的制作,可参见页面syslink的制作http://www.autoitscript.com/forum/topic/126958-guisyslink-udf
另外还有个支持库,可供大家下载参考。 谢谢楼主分享,学习了
页:
[1]