找回密码
 加入
搜索
查看: 12569|回复: 23

[AU3基础] 如何选择按钮进行点击?

 火.. [复制链接]
发表于 2010-6-4 22:38:01 | 显示全部楼层 |阅读模式
如果一个窗口,不定时的弹出,有时候有两个按钮,“下一条”和“确定”,有时候只有一个“确定”按钮。如果有两个按钮“下一条”和“确定”,点击“下一条”按钮;如果只有一个“确定”按钮,点击“确定”按钮,如何实现?窗口标题都一样,弹出的位置不同, 谢谢!
发表于 2010-6-5 10:18:59 | 显示全部楼层
如果有快捷键就好办多了。
发表于 2010-6-5 13:51:21 | 显示全部楼层
While 1
Sleep(100)
If WinExists("标题", "文本") Then
        If ControlClick ( "标题", "文本", "下一条控件ID") = 0 Then
                ControlClick ( "标题", "文本", "确定控件ID")
        Else
        EndIf
EndIf
WEnd
发表于 2010-6-5 14:46:47 | 显示全部楼层
来围观的 ....
 楼主| 发表于 2010-6-5 14:56:00 | 显示全部楼层
问题是没有控件ID   检测不出来
发表于 2010-6-5 15:10:59 | 显示全部楼层
问题是没有控件ID   检测不出来
tkl1 发表于 2010-6-5 14:56



    那就获取窗口大小和控件出现的x,y轴,然后用相对位置来模拟点击
 楼主| 发表于 2010-6-5 19:33:10 | 显示全部楼层
不能随便点  因为有判断条件!
发表于 2010-6-6 02:34:18 | 显示全部楼层
_WinAPI_EnumChildWindows枚举控件句柄通过句柄返回文本

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

 楼主| 发表于 2010-6-6 10:58:46 | 显示全部楼层
本帖最后由 tkl1 于 2010-6-6 13:43 编辑

非常感谢,能够再详细点吗,我找说明里面没有解释介绍。最好能帮我写个大概的出来,我好理解,呵呵!\

我百度了一下,说是调用外部程序,但如何调用,还不清楚,烦请教!
发表于 2010-6-6 17:13:35 | 显示全部楼层
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[0][0]
If $Data[$i][1]='button' And $Data[$i+1][1]='button' Then
_GUICtrlButton_Click ($Data[$i+1][0]);如果有两个按钮控件就点击第二个(即“取消”按钮)
        Else
If $Data[$i][1]='button' Then _GUICtrlButton_Click ($Data[$i][0])
        EndIf
 Next
 EndIf
WEnd

将以上两段代码同时运行,看看效果是不是楼主想要的?
PS:没有楼主具体软件环境,此2脚本只是解决思路,并非解决楼主问题的最终代码,仅供借鉴!

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-6-7 10:55:05 | 显示全部楼层
  这是下一条的控件信息


这是确定的控件信息   因为我点了下一条以后还要进行一系列的鼠标键盘操作,然后点确定结束操作。请问如何写?谢谢大侠们!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2010-6-7 11:25:51 | 显示全部楼层
While 1

If  WinExists("成交提示","")   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=1  Then
                        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    ;循环检测
这是我写的,循环有个问题。请高手修改一下。我希望每一条用飞信给我手机发短信,发完点确定退出。
发表于 2010-6-7 12:30:47 | 显示全部楼层
mark 围观···
发表于 2010-6-7 23:27:48 | 显示全部楼层
让大牛来搞吧。。
发表于 2010-6-8 00:12:55 | 显示全部楼层
本帖最后由 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

如此?
没有实际环境,也不知道是否误读楼主思路
仅供参考
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-19 06:49 , Processed in 0.090158 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表