run ("d:\wb86-98.EXE")
$hwin=WinWait("微软拼音输入法(2.0)","请仔细阅读",5)
WinActivate ($hwin)
ControlClick($hwin,"","")
;
$hwin=winwait("中文输入法组件安装程序","请从选项列表",5)
WinActivate ($hwin)
ControlFocus ($hwin,"",'ListBox1')
Send();模拟键盘操作
Send()
;。。。
;下面照上面改,没程序没测试,给个思路,点不上可能是坐标参考点不对
winwaitactive("中文输入法组件安装程序","请从选项列表")
ControlClick("中文输入法组件安装程序","请从选项列表","")
winwaitactive("王码五笔型输入法","请仔细阅读")
ControlClick("王码五笔型输入法","请仔细阅读","")
controlclick("中文输入法组件安装程序","请单击","") 不好意思,没注意挖坟了 ""?太夸张了,直接BUTTON2不就好了
根据CHM上的说法,有时要激活窗口才能点中 我也尝试过在ControlClick前加上ControlFocus,并且在两次ControlClick中间延时一秒,还是有时候会有点击不到的情况。太不可靠了。增加延时又会降低效率。 本帖最后由 xiehuahere 于 2010-5-6 13:18 编辑
通过可靠性试验,发现还是使用自定义函数 _GUICtrlButton_Click($hWnd) 通过控件句柄来操作最可靠。
试验中,ControlClick()根据控件ID来操作,ControlClick前使用WinActivate()确保窗口处于激活状态,并且使用ControlFocus()确保焦点正确处于控件上。发现一奇怪现象,LCD与CRT显示器上的可靠性竟然也相差很多,LCD显示器上点击失败的几率小些(500次中有3~5次),CRT显示器上5次中就可能有3次没点击成功。
绝望下把目光转向自定义函数,发现_GUICtrlButton_Click()还是非常好用的,至少CRT显示器上的可靠性大大提高,暂未发现点击失败的情况。想来既然有ControlClick(),别人为什么要自定义一个函数呢,自然是有其存在的价值。使用前先通过ControlGetHandle()获取控件句柄(这里我其实还是通过控件ID来获取句柄的,但可靠性真的不一样)。
结论:用句柄操作控件是最可靠的方法。 回复 22# xiehuahere
具体使用方法可以共享吗? 经测试,有效。感谢22楼的朋友。。。 ID不灵活,建议用别的 试一下,下面的。
用不着WinWaitActive,WinWaitActive在有其它操作的时候很可能点不到.
run ("d:\wb86-98.EXE")
winwait("微软拼音输入法(2.0)","请仔细阅读")
ControlClick("微软拼音输入法(2.0)","请仔细阅读","")
winwait("中文输入法组件安装程序","请从选项列表")
ControlClick("中文输入法组件安装程序","请从选项列表",'ListBox1',"left",1,10,25) ;就是这里
winwait("中文输入法组件安装程序","请从选项列表")
ControlClick("中文输入法组件安装程序","请从选项列表","")
winwait("王码五笔型输入法","请仔细阅读")
ControlClick("王码五笔型输入法","请仔细阅读","")
controlclick("中文输入法组件安装程序","请单击","")
页:
1
[2]