如何选择按钮进行点击?
如果一个窗口,不定时的弹出,有时候有两个按钮,“下一条”和“确定”,有时候只有一个“确定”按钮。如果有两个按钮“下一条”和“确定”,点击“下一条”按钮;如果只有一个“确定”按钮,点击“确定”按钮,如何实现?窗口标题都一样,弹出的位置不同, 谢谢! 如果有快捷键就好办多了。 While 1Sleep(100)
If WinExists("标题", "文本") Then
If ControlClick ( "标题", "文本", "下一条控件ID") = 0 Then
ControlClick ( "标题", "文本", "确定控件ID")
Else
EndIf
EndIf
WEnd
来围观的 .... 问题是没有控件ID 检测不出来 问题是没有控件ID 检测不出来
tkl1 发表于 2010-6-5 14:56 http://www.autoitx.com/images/common/back.gif
那就获取窗口大小和控件出现的x,y轴,然后用相对位置来模拟点击 不能随便点因为有判断条件! _WinAPI_EnumChildWindows枚举控件句柄通过句柄返回文本 本帖最后由 tkl1 于 2010-6-6 13:43 编辑
非常感谢,能够再详细点吗,我找说明里面没有解释介绍。最好能帮我写个大概的出来,我好理解,呵呵!\
我百度了一下,说是调用外部程序,但如何调用,还不清楚,烦请教! While 1
If Random() < 0.5 Then
$Msg = MsgBox(0, "窗口标题", "有1个按钮")
Else
$Msg = MsgBox(1, "窗口标题", "有2个按钮")
Endif
If $Msg = 1 Then ToolTip("自动点击了确定", 0, 0)
If $Msg = 2 Then ToolTip("自动点击了取消,相当于点击了“下一条”《《-。-》》", 0, 0)
Sleep(2000)
WEnd
#Include <Array.au3>
#Include <WinAPIEx.au3>
#include <GuiButton.au3>
While 1
Sleep(2000)
$handle = WinGetHandle("窗口标题","")
$Data = _WinAPI_EnumChildWindows($handle)
If IsArray($Data) Then
; _ArrayDisplay($Data, '_WinAPI_EnumChildWindows');11行的“button”从此数组获取,楼主的具体环境或许不一样,自行思考修改即可
For $i = 0 To $Data
If $Data[$i]='button' And $Data[$i+1]='button' Then
_GUICtrlButton_Click ($Data[$i+1]);如果有两个按钮控件就点击第二个(即“取消”按钮)
Else
If $Data[$i]='button' Then _GUICtrlButton_Click ($Data[$i])
EndIf
Next
EndIf
WEnd
将以上两段代码同时运行,看看效果是不是楼主想要的?
PS:没有楼主具体软件环境,此2脚本只是解决思路,并非解决楼主问题的最终代码,仅供借鉴! 这是下一条的控件信息
这是确定的控件信息 因为我点了下一条以后还要进行一系列的鼠标键盘操作,然后点确定结束操作。请问如何写?谢谢大侠们! While 1
IfWinExists("成交提示","") Then
WinGetText("成交提示","") ;检测到成交提示窗口
$text1 = WinGetText("成交提示","");获得"成交提示"文本
;$text= StringReplace($text1,"确定","") ;以上为替换弹出信使服务的字符串内容为中文
ClipPut($text1)
;MsgBox(0, "获得的文本:", $text)
Sleep(2000)
send("!.");打开2008版飞信
Sleep(1000)
WinActive("Fetion 2008 ","")
Sleep(2000)
send("!A");打开飞信菜单
Sleep(1000)
Send("+{TAB 8}")
Sleep(1000)
send("{ENTER}")
Sleep(1000)
Send("+{TAB 5}")
Sleep(2000)
send("{ENTER}")
Sleep(2000)
;ControlClick("群发短信","", "WindowsForms10.EDIT.app.0.297b0651", "left", 1, 225, 50) ;激活短信文字输入窗口
;ControlSetText("群发短信","", "WindowsForms10.EDIT.app.0.297b0651", $text) ;填写短信内容
send("^v")
Sleep(2000)
send("{ENTER}") ;按回车发送
Sleep(2000)
WinActivate("成交提示","")
Sleep(2000)
$kejian=ControlCommand ( "成交提示", "", 2084, "IsVisible" )
If$kejian=1Then
ControlClick ( "成交提示", "", 2084)
Sleep(2000)
WinGetText("成交提示","") ;检测到成交提示窗口
$text1 = WinGetText("成交提示","");获得"成交提示"文本
;$text= StringReplace($text1,"确定","") ;以上为替换弹出信使服务的字符串内容为中文
ClipPut($text1)
;MsgBox(0, "获得的文本:", $text)
Sleep(2000)
send("!.");打开2008版飞信
Sleep(1000)
WinActive("Fetion 2008 ","")
Sleep(2000)
send("!A");打开飞信菜单
Sleep(1000)
Send("+{TAB 8}")
Sleep(1000)
send("{ENTER}")
Sleep(1000)
Send("+{TAB 5}")
Sleep(2000)
send("{ENTER}")
Sleep(2000)
;ControlClick("群发短信","", "WindowsForms10.EDIT.app.0.297b0651", "left", 1, 225, 50) ;激活短信文字输入窗口
;ControlSetText("群发短信","", "WindowsForms10.EDIT.app.0.297b0651", $text) ;填写短信内容
send("^v")
Sleep(2000)
send("{ENTER}") ;按回车发送
Sleep(2000)
WinActivate("成交提示","")
Sleep(2000)
ControlClick ( "成交提示", "", 2084)
Else
ControlClick ( "成交提示", "", 2088)
EndIf
Endif
Wend ;循环检测
这是我写的,循环有个问题。请高手修改一下。我希望每一条用飞信给我手机发短信,发完点确定退出。 mark 围观··· 让大牛来搞吧。。 本帖最后由 lynfr8 于 2010-6-8 00:14 编辑
While 1
If WinExists("成交提示", "") Then
get()
If ControlCommand("成交提示", "", 2084, "IsVisible") = 1 Then
ControlClick("成交提示", "", 2084)
Else
ControlClick("成交提示", "", 2088)
EndIf
EndIf
WEnd
Func get()
ClipPut(StringReplace(WinGetText("成交提示", ""), "确定", ""))
Send("!.") ;打开2008版飞信
WinWaitActive("Fetion 2008 ", "")
Send("!A") ;打开飞信菜单
Sleep(1000)
Send("+{TAB 8}")
Sleep(1000)
Send("{ENTER}")
Sleep(1000)
Send("+{TAB 5}")
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Send("^v")
Sleep(2000)
Send("{ENTER}") ;按回车发送
Sleep(2000)
WinActivate("成交提示", "")
Sleep(2000)
EndFunc ;==>get
如此?
没有实际环境,也不知道是否误读楼主思路
仅供参考
页:
[1]
2