找回密码
 加入
搜索
查看: 2521|回复: 6

[AU3基础] 如何实现多个循环?

  [复制链接]
发表于 2011-8-27 08:57:54 | 显示全部楼层 |阅读模式
本帖最后由 82035935 于 2011-8-27 09:00 编辑
Run("系统专家.exe")

While 1
If Not ProcessExists("系统专家.exe") Then Exit
Wend
只执行一个循环完全没问题,执行完毕就会自动退出脚本。
While 1
If Not ProcessExists("系统专家.exe") Then Exit
If WinWaitActive("","安装百度工具栏") Then ControlClick("","安装百度工具栏","TCheckBox1")
If WinWaitActive("","安装百度工具栏") Then ControlClick("","继  续","TButton1")
ExitLoop
Wend
但执行两个或多个循环就不能自动退出脚本了,我需要的是如何执行多个循环又能自动退出脚本呢?
发表于 2011-8-27 09:35:56 | 显示全部楼层
你这个有一个BUG。。。若电话上有多个系统专家.exe这个名字的进程怎么办??那不就直接退了?

呵呵,,,你看一下RUN的返回值,可是PID啊。。。多爽!!

$tmppid1=Run("系统专家.exe")
If $tmppid1<>0 then
Do
        Sleep(50)
Until ProcessExists ($tmppid1)=0
Else
        MsgBox(16,"","执行系统专家.exe失败")
EndIf
发表于 2011-8-27 09:38:56 | 显示全部楼层
第二段话我没有看懂。。。是指同时执行多个循环?。。。多线程或者采用多进程模仿多线程效果。。。你在论坛上搜搜。。。会有很多答案给你的。。。。
发表于 2011-8-27 09:43:37 | 显示全部楼层
你想同时执行多个循环,是这个意思吧,也许AdlibRegister()可以帮你!
发表于 2011-8-27 11:19:57 | 显示全部楼层
你的程序逻辑有问题。
在第一段代码中,Run("系统专家.exe")执行完毕会立即执行循环,此时"系统专家.exe"是没有完成启动的,因为程序启动需要一定的时间。
第二段代码中循环体比较多,在执行循环是"系统专家.exe"可能已经运行成功了,所以If Not ProcessExists("系统专家.exe") Then Exit这条语句不能退出循环,后面两条语句没有指定退出循环,所以构成了死循环,而且可能无限次打开"安装百度工具栏"造成死机,很危险!这种代码很不稳定,执行结果与系统运行速度有关,应避免。
发表于 2011-8-27 13:05:48 | 显示全部楼层
加sleep测试下是不是窗口没完全打开
发表于 2011-8-27 15:22:44 | 显示全部楼层
WinWaitActive放到while里?
WinWaitActive
--------------------------------------------------------------------------------

暂停脚本执行,直到请求的窗口激活.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 01:10 , Processed in 0.083927 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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