找回密码
 加入
搜索
查看: 3273|回复: 8

[AU3基础] 为什么会多执行一次

  [复制链接]
发表于 2012-9-23 15:59:12 | 显示全部楼层 |阅读模式
本帖最后由 qinylj 于 2012-9-23 16:00 编辑

今天做了一个控制VPN登陆地东西,代码如下
Do 
        ControlCommand("BJVPN", "登录", "[CLASS:ComboBox; INSTANCE:3]", "SetCurrentSelection", Random(1, $BDcommentreply_VPN_Combobox[0] - 1, 1))
        ControlClick("BJVPN", "登录", "[CLASS:Button; INSTANCE:12]", "left", 1)
        WinWait("Ping", "关闭")
        Sleep(2000)
        $BDcommentreply_VPN_Testtext = StringInStr(ControlGetText("Ping", "关闭", "[CLASS:Edit; INSTANCE:1]"), "time=")
;~ WinKill("Ping", "关闭")
Until $BDcommentreply_VPN_Testtext > 0
ControlCommand那段代码是随机设置Combobox的项目
接下来就是点击 测试 按钮
然后等待窗口出现
之后通过判断Edit中是否含有time=来结束循环
但是只要把注释出的代码换成winclose或controlclick或者winkill等就会多弹出来一次,困扰我一个下午了,哎。
发表于 2012-9-23 17:41:11 | 显示全部楼层
回复 1# qinylj
没条件进行具体测试, 只能给出点建议:
无论是那种循环语法, 如果其运行次数不对时, 都应该跟踪它条件变量, 以检查出错的'环节', 所以你要检查 $BDcommentreply_VPN_Testtext 在每次循环中的值! 最好用 ConsoleWrite 作输出, 这样不怎么影响程序的效率和执行的通畅性.
发表于 2012-9-23 23:13:51 | 显示全部楼层
我想你应该找找帮助文件看看  Do until 的具体用法
发表于 2012-9-23 23:19:34 | 显示全部楼层
你写的结束条件    跟   你想要的结束条件    有差距~~~
 楼主| 发表于 2012-9-24 08:56:55 | 显示全部楼层
回复 2# user3000


    我试过用Consolewrite写的,如果里面包含了time=的时候返回的是一个数字,就是time=的位置
但是,这个时候Ping窗口依然会弹出两次,后来我把do until循环去掉之后,同样的问题出现了,依旧会两次弹出ping窗口......
 楼主| 发表于 2012-9-24 08:59:26 | 显示全部楼层
回复 3# nivisde


    如果问题真的那么简单我就不会问了......
    我想你还没看懂我的问题......出现问题是因为把注释的那行代码加上了......
 楼主| 发表于 2012-9-24 09:01:35 | 显示全部楼层
回复 4# 魔导


    同三楼一样,Do until循环没有任何问题,我把注释那段代码加上就会出现多弹一次窗口的问题,把那行代码去掉后就一切正常了......
发表于 2012-9-24 12:51:12 | 显示全部楼层
回复 7# qinylj


    好吧  - -!  那就注释掉那行用吧~~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 17:34 , Processed in 0.079799 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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