找回密码
 加入
搜索
查看: 6177|回复: 9

[AU3基础] 怎么在自动安装脚本中添加循环检测进程代码 如果不存在则自动退出脚本

  [复制链接]
发表于 2010-12-10 23:05:19 | 显示全部楼层 |阅读模式
本帖最后由 YoDe 于 2010-12-12 21:28 编辑

RT 希望大家可以帮我解决一下
安装过程中 随时检查 进程是否存在。如不存在则退出脚本。
否则安装的过程中如果强制结束进程 会导致代码卡停在那里。
#NoTrayIcon
[code]#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=E:\Win7SoftWare\Tencent\QQ\Bin\QQ.exe
#AutoIt3Wrapper_outfile=C:\Users\YoDe\Desktop\Auto_QQ2010.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
;本脚本由i-Autoit-1.01 正式版 生成 ,非常感谢您的使用,请保留此脚本声明!  2010年12月03日
 
;--------------------------------------------------------------;脚本开始
Opt("TrayIconDebug", 1) ;0=无信息, 1=调试信息
Opt("WinTextMatchMode", 2) ;1=完全匹配, 2=快速匹配
Opt("WinTitleMatchMode", 4) ;1=开头, 2=子串, 3=完全, 4=高级
Opt("WinSearchChildren", 1) ;0=不搜索, 1=搜索子窗口
Opt("WinDetectHiddenText", 1) ;0=不检测, 1=检测
;--------------------------------------------------------------;设置脚本参数
$WinTitle_1 = '腾讯QQ2010 安装向导'
$Wintxt_1 = '下一步(&N)'
$Wintxt_2 = '上一步(&P)'
$Wintxt_3 = '安装(&I)'
$Wintxt_4 = '完成(&F)'
;--------------------------------------------------------------;窗口元素变量声明
$Exe = 'QQ2010.exe'

If ProcessExists($Exe) Then exit
If ProcessExists($Exe) Then ProcessClose($Exe)

If Run($Exe) = 0 Then ShellExecute($Exe)
AdlibRegister("Chkexe")
Do
        Sleep(10);
Until WinExists($WinTitle_1)
;WinMove($Wintitle_1, "", -1000, -1000)
;--------------------------------------------------------------;程序启动,显示界面
 
 
WinWaitActive($WinTitle_1, $Wintxt_1);

ControlClick($WinTitle_1, $Wintxt_1, "Button1");---------------;点击按钮控件: 我已阅读并同意软件许可协议和青少年上网安全指引
 
 
ControlClick($WinTitle_1, $Wintxt_1, "Button3");---------------;点击按钮控件: 下一步(&N)
 
 
WinWaitActive($WinTitle_1, $Wintxt_2);
ControlClick($WinTitle_1, $Wintxt_2, "Button9");---------------;点击按钮控件: 安装QQ工具栏及中文搜搜
 
 
ControlClick($WinTitle_1, $Wintxt_2, "Button10");---------------;点击按钮控件: 安装QQ拼音输入法
 
 
ControlClick($WinTitle_1, $Wintxt_2, "Button11");---------------;点击按钮控件: 安装QQ五笔输入法
 
 
ControlClick($WinTitle_1, $Wintxt_2, "Button12");---------------;点击按钮控件: 安装QQ音乐播放器
 
 
ControlClick($WinTitle_1, $Wintxt_2, "Button7");---------------;点击按钮控件: 快速启动栏
 
 
ControlClick($WinTitle_1, $Wintxt_2, "Button2");---------------;点击按钮控件: 下一步(&N)
 
 
WinWaitActive($WinTitle_1, $Wintxt_3);
ControlClick($WinTitle_1, $Wintxt_3, "Button8");---------------;点击按钮控件: 保存到“我的文档”(推荐)
 
 
ControlClick($WinTitle_1, $Wintxt_3, "Button2");---------------;点击按钮控件: 安装(&I)
 
 
WinWaitActive($WinTitle_1, $Wintxt_4);
ControlClick($WinTitle_1, $Wintxt_4, "Button6");---------------;点击按钮控件: 立即运行腾讯QQ2010
 
 
ControlClick($WinTitle_1, $Wintxt_4, "Button8");---------------;点击按钮控件: 开机时自动启动腾讯QQ2010
 
 
ControlClick($WinTitle_1, $Wintxt_4, "Button9");---------------;点击按钮控件: 设置腾讯网为主页
 
 
ControlClick($WinTitle_1, $Wintxt_4, "Button7");---------------;点击按钮控件: 显示新特性
 
 
ControlClick($WinTitle_1, $Wintxt_4, "Button2");---------------;点击按钮控件: 完成(&F)
 
Func Chkexe()
        If Not ProcessExists($Exe) Then Exit
EndFunc   ;==>Chkexe
问题已解决就是不知道会不会EXE没运行AdlibRegister("Chkexe")
代码已经执行了 导致脚本退出?先观察下吧 如果导致脚本推出 再加个判断。
发表于 2010-12-10 23:44:16 | 显示全部楼层
回复 1# YoDe


    While 1
       xxxxxxxxxxxxxxxxxx
    WEnd
 楼主| 发表于 2010-12-11 00:06:32 | 显示全部楼层
我知道循环命令哦 但是我不知道怎么加入我的代码才有效 能直接帮我加进去吗 谢谢楼上的。
发表于 2010-12-11 04:06:04 | 显示全部楼层
一个例子,使用AdlibRegister.
#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_Icon=E:\Win7SoftWare\Tencent\QQ\Bin\QQ.exe|-1
#AutoIt3Wrapper_OutFile=C:\Users\YoDe\Desktop\312.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
;本脚本由i-Autoit-1.01 正式版 生成 ,非常感谢您的使用,请保留此脚本声明!  2010年12月03日

;--------------------------------------------------------------;脚本开始
Opt("TrayIconDebug", 1) ;0=无信息, 1=调试信息
Opt("WinTextMatchMode", 2) ;1=完全匹配, 2=快速匹配
Opt("WinTitleMatchMode", 4) ;1=开头, 2=子串, 3=完全, 4=高级
Opt("WinSearchChildren", 1) ;0=不搜索, 1=搜索子窗口
Opt("WinDetectHiddenText", 1) ;0=不检测, 1=检测
;--------------------------------------------------------------;设置脚本参数
$WinTitle_1 = '腾讯QQ2010 安装向导'
$Wintxt_1 = '下一步(&N)'
$Wintxt_2 = '上一步(&P)'
$Wintxt_3 = '安装(&I)'
$Wintxt_4 = '完成(&F)'
$Exe = 'QQ2010.exe'
;--------------------------------------------------------------;窗口元素变量声明

AdlibRegister("aaa", 1000)

Do
        Sleep(10);
Until WinExists($WinTitle_1)
;WinMove($Wintitle_1, "", -1000, -1000)
;--------------------------------------------------------------;程序启动,显示界面


WinWaitActive($WinTitle_1, $Wintxt_1);
ControlClick($WinTitle_1, $Wintxt_1, "Button1");---------------;点击按钮控件: 我已阅读并同意软件许可协议和青少年上网安全指引


ControlClick($WinTitle_1, $Wintxt_1, "Button3");---------------;点击按钮控件: 下一步(&N)


WinWaitActive($WinTitle_1, $Wintxt_2);
ControlClick($WinTitle_1, $Wintxt_2, "Button9");---------------;点击按钮控件: 安装QQ工具栏及中文搜搜


ControlClick($WinTitle_1, $Wintxt_2, "Button10");---------------;点击按钮控件: 安装QQ拼音输入法


ControlClick($WinTitle_1, $Wintxt_2, "Button11");---------------;点击按钮控件: 安装QQ五笔输入法


ControlClick($WinTitle_1, $Wintxt_2, "Button12");---------------;点击按钮控件: 安装QQ音乐播放器


ControlClick($WinTitle_1, $Wintxt_2, "Button7");---------------;点击按钮控件: 快速启动栏


ControlClick($WinTitle_1, $Wintxt_2, "Button2");---------------;点击按钮控件: 下一步(&N)


WinWaitActive($WinTitle_1, $Wintxt_3);
ControlClick($WinTitle_1, $Wintxt_3, "Button8");---------------;点击按钮控件: 保存到“我的文档”(推荐)


ControlClick($WinTitle_1, $Wintxt_3, "Button2");---------------;点击按钮控件: 安装(&I)


WinWaitActive($WinTitle_1, $Wintxt_4);
ControlClick($WinTitle_1, $Wintxt_4, "Button6");---------------;点击按钮控件: 立即运行腾讯QQ2010


ControlClick($WinTitle_1, $Wintxt_4, "Button8");---------------;点击按钮控件: 开机时自动启动腾讯QQ2010


ControlClick($WinTitle_1, $Wintxt_4, "Button9");---------------;点击按钮控件: 设置腾讯网为主页


ControlClick($WinTitle_1, $Wintxt_4, "Button7");---------------;点击按钮控件: 显示新特性


ControlClick($WinTitle_1, $Wintxt_4, "Button2");---------------;点击按钮控件: 完成(&F)

Func aaa()
        If Not ProcessExists($Exe) Then        ShellExecute($Exe)
EndFunc   ;==>aaa
发表于 2010-12-11 12:01:19 | 显示全部楼层
本帖最后由 都市浪子666 于 2010-12-14 09:31 编辑


#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_Icon=E:\Win7SoftWare\Tencent\QQ\Bin\QQ.exe|-1
#AutoIt3Wrapper_OutFile=C:\Users\YoDe\Desktop\312.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
;本脚本由i-Autoit-1.01 正式版 生成 ,非常感谢您的使用,请保留此脚本声明!  2010年12月03日
 
;--------------------------------------------------------------;脚本开始
Opt("TrayIconDebug", 1) ;0=无信息, 1=调试信息
Opt("WinTextMatchMode", 2) ;1=完全匹配, 2=快速匹配
Opt("WinTitleMatchMode", 4) ;1=开头, 2=子串, 3=完全, 4=高级
Opt("WinSearchChildren", 1) ;0=不搜索, 1=搜索子窗口
Opt("WinDetectHiddenText", 1) ;0=不检测, 1=检测
;--------------------------------------------------------------;设置脚本参数
$WinTitle_1 = '腾讯QQ2010 安装向导'
$Wintxt_1 = '下一步(&N)'
$Wintxt_2 = '上一步(&P)'
$Wintxt_3 = '安装(&I)'
$Wintxt_4 = '完成(&F)'
$Exe = 'QQ2010.exe'
$ver="no"
;--------------------------------------------------------------;窗口元素变量声明


;--------------------------------------------------------------;程序启动,显示界面
;WinWait($WinTitle_1, $Wintxt_1)

Do
        Sleep(10)
        If WinExists($WinTitle_1, $Wintxt_1)  Then
         ControlClick($WinTitle_1, $Wintxt_1, "Button1");---------------;点击按钮控件: 我已阅读并同意软件许可协议和青少年上网安全指引
 
         ControlClick($WinTitle_1, $Wintxt_1, "Button3");---------------;点击按钮控件: 下一步(&N)
    EndIf
        
        If  WinExists($WinTitle_1, $Wintxt_2) Then
        ControlClick($WinTitle_1, $Wintxt_2, "Button9");---------------;点击按钮控件: 安装QQ工具栏及中文搜搜
 
 
       ControlClick($WinTitle_1, $Wintxt_2, "Button10");---------------;点击按钮控件: 安装QQ拼音输入法
 
 
       ControlClick($WinTitle_1, $Wintxt_2, "Button11");---------------;点击按钮控件: 安装QQ五笔输入法
 
 
       ControlClick($WinTitle_1, $Wintxt_2, "Button12");---------------;点击按钮控件: 安装QQ音乐播放器
 
 
       ControlClick($WinTitle_1, $Wintxt_2, "Button7");---------------;点击按钮控件: 快速启动栏
 
 
        ControlClick($WinTitle_1, $Wintxt_2, "Button2");---------------;点击按钮控件: 下一步(&N)
        EndIf
        
        If  WinExists($WinTitle_1, $Wintxt_3)Then
        ControlClick($WinTitle_1, $Wintxt_3, "Button8");---------------;点击按钮控件: 保存到“我的文档”(推荐)
 
 
        ControlClick($WinTitle_1, $Wintxt_3, "Button2");---------------;点击按钮控件: 安装(&I)
        EndIf
        
        
        If WinExists($WinTitle_1, $Wintxt_4)  Then
       ControlClick($WinTitle_1, $Wintxt_4, "Button6");---------------;点击按钮控件: 立即运行腾讯QQ2010
 
 
       ControlClick($WinTitle_1, $Wintxt_4, "Button8");---------------;点击按钮控件: 开机时自动启动腾讯QQ2010
 
 
       ControlClick($WinTitle_1, $Wintxt_4, "Button9");---------------;点击按钮控件: 设置腾讯网为主页
 
 
       ControlClick($WinTitle_1, $Wintxt_4, "Button7");---------------;点击按钮控件: 显示新特性
 
 
       ControlClick($WinTitle_1, $Wintxt_4, "Button2");---------------;点击按钮控件: 完成(&F)
           $ver="yes"
  EndIf 
        
Until  ProcessExists($Exe) = False  Or  $ver="yes"
 楼主| 发表于 2010-12-12 18:01:19 | 显示全部楼层
多谢楼上的几位坛友 我去试试
 楼主| 发表于 2010-12-12 19:52:09 | 显示全部楼层
5楼朋友的方法。。不能达到要求哦 我是要求程序运行的时候随时检测是否有QQ进程 如果存在则继续安装。。
可是 你这个代码 如果我强制结束QQ安装程序 你的代码就卡死在那了。。
发表于 2010-12-12 20:09:08 | 显示全部楼层
不错,支持一下。
 楼主| 发表于 2010-12-12 21:02:17 | 显示全部楼层
本帖最后由 YoDe 于 2010-12-12 21:29 编辑

感谢楼上的几位 问题已经基本解决。。
发表于 2010-12-14 09:31:20 | 显示全部楼层
5楼朋友的方法。。不能达到要求哦 我是要求程序运行的时候随时检测是否有QQ进程 如果存在则继续安装。。
可 ...
YoDe 发表于 2010-12-12 19:52


兄弟,不好意思,把 5楼贴子中  26行的代码去掉就可以了  WinWait($WinTitle_1, $Wintxt_1)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-22 16:25 , Processed in 0.097226 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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