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

[AU3基础] [已解决]脚本为什么没有结束?所有步骤都完成了但是tooltip却一直存在

  [复制链接]
发表于 2015-12-17 11:25:21 | 显示全部楼层 |阅读模式
本帖最后由 xing999999 于 2015-12-18 11:36 编辑
_main()

Exit
Func _main()
        Local $liulanqi = "2345王牌浏览器 v6.3"
        Local $tip
        Sleep(200)
        Run("2345explorer.exe")
        $tip = "为了保证自动安装的顺利完成,请不要乱动的键盘和鼠标。"
        $tip &= @CRLF
        $tip &= "2345浏览器默认安装在C盘。如果需要安装在其他盘,请使用手动安装。"
        $tip &= @CRLF
        $tip &= "如果需要安装在其他盘,请在安装结束后,卸载,再手动安装。"
        ToolTip($tip, @DesktopWidth / 2.5 - 15, @DesktopHeight - 40 - 60, "温馨提示:", 2)
        Sleep(200)
        WinWaitActive($liulanqi)
        Sleep(200)
        Send("{ENTER}")
        Sleep(200)
        $liulanqi = "2345网址导航-开创中国百年品牌(已创建10年零3个月) - 2345王牌浏览器 6.3"
        WinWaitActive($liulanqi)
        Sleep(1000)
        Send("!{F4}")
        Sleep(200)
        $liulanqi = "2345王牌浏览器"
        WinWaitActive($liulanqi)
        Sleep(200)
        Send("{ENTER}")
EndFunc   ;==>_main
测试运行,安装过程中一切顺利,但是所有步骤都完成后,tooltip还是存在,并且我看右下的脚本也存在。
后来我加了Opt('TrayIconDebug', 1)调试,发现脚本一直停在WinWaitActive($liulanqi)这一句,为什么呢?不是等并激活窗口后发送enter然后就结束了吗?
 楼主| 发表于 2015-12-17 11:40:45 | 显示全部楼层
我把代码改成
Opt('TrayIconDebug', 1)

Local $liulanqi = "2345王牌浏览器 v6.3"
Local $tip
Sleep(200)
Run("2345explorer.exe")
$tip = "为了保证自动安装的顺利完成,请不要乱动的键盘和鼠标。"
$tip &= @CRLF
$tip &= "2345浏览器默认安装在C盘。如果需要安装在其他盘,请使用手动安装。"
$tip &= @CRLF
$tip &= "如果需要安装在其他盘,请在安装结束后,卸载,再手动安装。"
ToolTip($tip, @DesktopWidth / 2.5 - 15, @DesktopHeight - 40 - 60, "温馨提示:", 2)
Sleep(200)
WinWaitActive($liulanqi)
Sleep(200)
Send("{ENTER}")
Sleep(200)
$liulanqi = "2345网址导航-开创中国百年品牌(已创建10年零3个月) - 2345王牌浏览器 6.3"
WinWaitActive($liulanqi)
ProcessClose("2345Explorer.exe")
Exit
改成这样就好了,直接结束进程。。但我还是不明白为什么上面的不行。
发表于 2015-12-17 11:52:47 | 显示全部楼层
如果可以的话,将WinWaitxxx换成Findwindow,将Send换成sendmessage
 楼主| 发表于 2015-12-17 12:27:30 | 显示全部楼层
Findwindow?我刚去索引里查了,没这个啊,连find都没。。。
发表于 2015-12-17 12:52:49 | 显示全部楼层
你用了两处 Send("{ENTER}"),而且你也肯定所有的步骤已完成,由此推测,脚本并没有执行完,只是完成了上面那个 Send("{ENTER}")

由此继续推测 WinWaitActive($liulanqi) 等待的的其实是 "2345网址导航-开创中国百年品牌(已创建10年零3个月) - 2345王牌浏览器 6.3" 你既然加了OPT调试,应该注意其行号。

真如此的话,继续推测。等待的窗口要么匹配错误,要么就是也可能不出现的窗口。如果属于前者,修改匹配标题;如果是后者,用我以前告诉你的方法,用 REGEXPTITLE 匹配可能出现的窗口,进而用 StringInstr 确定。

另外,跟你说过,少 Sleep,结果你到处都是 Sleep,而且,将 Sleep 用在 WinWaitActive 下面绝对是画蛇添足的错误,必须删除,否则隐患、不稳定。

再另外,WinWaitActive 肯定不如 WinWait 再 WinActivate 的方式,前者或会被用户的其它操作而暂停
发表于 2015-12-17 21:05:33 | 显示全部楼层
脚本结束之前自己使用tooltip("") 关闭之前的提示信息。
 楼主| 发表于 2015-12-17 22:53:11 | 显示全部楼层
回复 5# afan


一段话让我明白了很多。谢谢。。。
我之前也是完全不明白winwaitactive和 winwait+winactivate的区别,我还以为前者是后两者的升级版。。
老师既然说少SLEEP,我自然遵守,这个是我最开始学脚本自动化的时候做的,今天回过头来继续做,运行了下结果发现没完成,看了下代码又没发现什么,才来问的。如果是现在写必然是会尽少用SLEEP。
发表于 2015-12-18 08:54:41 | 显示全部楼层
如果确定执行完毕,结尾tooltip("")
如阿凡所说,少用sleep
发表于 2015-12-18 15:32:16 | 显示全部楼层
新手  学习了  感谢分享
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-26 21:30 , Processed in 0.074581 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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