找回密码
 加入
搜索
查看: 1781|回复: 7

安装界面无法激活,脚本暂停

[复制链接]
发表于 2009-6-5 18:27:42 | 显示全部楼层 |阅读模式
本帖最后由 yangxin004 于 2009-6-8 17:00 编辑

各位大侠,小弟在写自动安装影音风暴的时候,遇到了一个问题。。
以下是我写的代码,请各位大侠赐教啊!

run("mympcsetup")
WinWaitActive("影音风暴 2008 Beta1 安装","欢迎使用“影音风暴 2008 Beta1”安装向导")
send("!n")
WinWaitActive("影音风暴 2008 Beta1 安装","许可证协议")
send("!i")
WinWaitActive("影音风暴 2008 Beta1 安装","选择组件")
send("!n")
WinWaitActive("影音风暴 2008 Beta1 安装","选择安装位置")
send("!i")
WinWaitActive("影音风暴 MYMPC.COM.CN ","选择文件格式")
ControlCommand("影音风暴 MYMPC.COM.CN ","选择文件格式", "ComboBox1","SelectString", '所有视频格式')
ControlClick ("影音风暴 MYMPC.COM.CN ","确定", "Button2" )
WinWaitActive("http://www.mympc.com.cn/mympc.asp")
send("!{F4}")
在这一步之后脚本就暂停了,弹出ie界面被关闭后,软件的完成安装界面就无法被激活了,需要手动点击一下界面才能继续,就是这一步该咋办呢?如图




WinWaitActive("影音风暴 2008 Beta1 安装 ","正在完成")
send("!r")
send("!m")
send("!f")
exit
 楼主| 发表于 2009-6-5 18:29:03 | 显示全部楼层
我不知道论坛是咋贴图的啊,这样我可以把图贴上来,请教了
发表于 2009-6-5 18:42:42 | 显示全部楼层
WinWaitActive("http://www.mympc.com.cn/mympc.asp")
send("!{F4}")
在这后面加个winactive("","")
发表于 2009-6-5 18:49:03 | 显示全部楼层
本帖最后由 lynfr8 于 2009-6-5 23:49 编辑

窗口信息写错了!
如果默认是IE打开的话:

WinWaitActive(http://www.mympc.com.cn/mympc.asp)
send("!{F4}")
改成
WinWaitActive("影音风暴(MYMPC)官方站 - Microsoft Internet Explorer")
winclose("影音风暴(MYMPC)官方站 - Microsoft Internet Explorer")
或者直接杀死IE进程(我个人比较喜欢这样,呵呵)
 楼主| 发表于 2009-6-5 22:56:42 | 显示全部楼层
我试了一下二楼的方法不行,三楼的误解了我的意思,我的代码已经将ie关闭了,但是后来弹出的安装完成界面不能处于激活状态,脚本不能继续下去了。
发表于 2009-6-5 23:25:28 | 显示全部楼层
run("mympcsetup")
WinWaitActive("影音风暴 2008 Beta1 安装","欢迎使用“影音风暴 2008 Beta1”安装向导")
send("!n")
WinWaitActive("影音风暴 2008 Beta1 安装","许可证协议")
send("!i")
WinWaitActive("影音风暴 2008 Beta1 安装","选择组件")
send("!n")
WinWaitActive("影音风暴 2008 Beta1 安装","选择安装位置")
send("!i")
WinWaitActive("影音风暴 MYMPC.COM.CN ","选择文件格式")
ControlCommand("影音风暴 MYMPC.COM.CN ","选择文件格式", "ComboBox1","SelectString", '所有视频格式')
ControlClick ("影音风暴 MYMPC.COM.CN ","确定", "Button2" )
WinWaitActive("http://www.mympc.com.cn/mympc.asp")
send("!{F4}")

sleep(2000) ;睡觉2秒让完成窗口走出来
if WinExists("影音风暴 2008 Beta1 安装 ","正在完成") then  ;判断当前有没有完成窗口
WinActive ("影音风暴 2008 Beta1 安装 ","正在完成") ;激活完成窗口
WinWaitActive("影音风暴 2008 Beta1 安装 ","正在完成")  ;可以不要..
 
send("!r")
send("!m")
send("!f")
exit
 
endif
发表于 2009-6-5 23:45:02 | 显示全部楼层
本帖最后由 lynfr8 于 2009-6-5 23:48 编辑

不好意思,没直接测试就以为你是获取窗口出错
我再想了想我以前写自动安装脚本也遇过类似的情况
只不过好久没写自动安装脚本了

其实
当安装窗口失去焦点之后是无法响应winactive
当IE弹窗并被关闭之后,安装窗口已经不是活动窗口
需要“激活它为活动窗口”!
注意---“激活”的函数不是WinWaitActive!

帮助文件写的很清楚:
WinActive        :检查指定的窗口是否存在且当前被激活
WinWaitActive  :暂停脚本的执行直至指定窗口被激活(成为可活动状态)为止
WinActivate     :激活指定的窗口(设置焦点到该窗口,使其成为活动窗口)

前两个函数在没有其他鼠标操作或者弹窗导致失去安装界面焦点的话
是可以顺利执行整个脚本的
而你这种中途暂停的情况要用WinActivate激活窗口
再执行后面的代码
(检查窗口是否激活和激活指定窗口是不同定义的!)
解决代码如下,已经过测试:
run("mympcsetup.exe")
WinWaitActive("影音风暴 2008 Beta1 安装","欢迎使用“影音风暴 2008 Beta1”安装向导")
send("!n")
WinWaitActive("影音风暴 2008 Beta1 安装","许可证协议")
send("!i")
WinWaitActive("影音风暴 2008 Beta1 安装","选择组件")
send("!n")
WinWaitActive("影音风暴 2008 Beta1 安装","选择安装位置")
send("!i")
WinWaitActive("影音风暴 MYMPC.COM.CN ","选择文件格式")
ControlCommand("影音风暴 MYMPC.COM.CN ","选择文件格式", "ComboBox1","SelectString", '所有视频格式')
ControlClick ("影音风暴 MYMPC.COM.CN ","确定", "Button2" )
WinWaitActive("影音风暴(MYMPC)官方站 - Microsoft Internet Explorer")
winclose("影音风暴(MYMPC)官方站 - Microsoft Internet Explorer")
;弹出ie界面关闭后脚本暂停,需要WinActivate激活软件的完成安装界面
WinActivate("影音风暴 2008 Beta1 安装 ",'完成(&F)')
WinWaitActive("影音风暴 2008 Beta1 安装 ",'完成(&F)')
send("!r")
send("!m")
send("!f")
 楼主| 发表于 2009-6-8 16:54:25 | 显示全部楼层
谢谢两位热心人啊,问题解决了,好开心,还是好人多啊。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-24 05:14 , Processed in 0.078291 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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