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

[AU3基础] 应该在哪里合适的添加runwait呢?

  [复制链接]
发表于 2010-8-29 15:03:17 | 显示全部楼层 |阅读模式
本帖最后由 思夜月心 于 2010-8-29 15:05 编辑

是这样一个网友让我帮他写一个
自动安装一些工具
窗口标题为:系统可选组件更新和优化设置
内容:
()安装IE8.0和更新补丁——ie8 .exe    默认
( ) 建立宽带连接——adsl.exe   默认
( ) 安装微软msxml解释器——msxml.exe  默认
( ) 安装Framework2.0和3.0----net .exe     不默认
( ) 注册表优化——anti.reg    默认
( ) 重启调用软件安装管理器-----chongqi.exe   默认
说明:
默认8秒执行安装命令
鼠标点击窗口则停止倒计时。
界面最好是白色半透明,字体清晰


界面我是弄好了!
粗略的代码也是写好了!
但是在想调用RUNwait的时候还有不是合适!
下面是我的代码。
请大家帮帮忙,看看 这个RUNWAIT应该要加在哪里啊?
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $time = 8
$Form1 = GUICreate("系统可选组件更新和优化设置", 250, 150,300,300,$WS_POPUP)
GUISetBkColor(0xE0FFFF)
WinSetTrans("系统可选组件更新和优化设置","",170)
GUICtrlCreateGroup("",5,5,160,130)
$Checkbox1 = GUICtrlCreateCheckbox("安装IE8.0和更新补丁", 10, 15, 150, 15)
$Checkbox2 = GUICtrlCreateCheckbox("建立宽带连接", 10, 35, 150, 15)
$Checkbox3 = GUICtrlCreateCheckbox("安装微软msxml解释器", 10, 55, 150, 15)
$Checkbox4 = GUICtrlCreateCheckbox("安装Framework2.0和3.0", 10, 75, 150, 15)
$Checkbox5 = GUICtrlCreateCheckbox("注册表优化", 10, 95, 150, 15)
$Checkbox6 = GUICtrlCreateCheckbox("重启调用软件安装管理器", 10, 115, 150, 15)
GUICtrlCreateGroup("",170,5,75,130)
$Button1 = GUICtrlCreateButton("默认安装",175,15,70,30)
$Button2 = GUICtrlCreateButton("手动安装",175,45,70,30)
GUISetFont(20,"","","宋体")
$Label1 = GUICtrlCreateLabel($time,200,90,70,30)
GUISetState(@SW_SHOW)


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        GUICtrlSetState($Checkbox1, $GUI_CHECKED)
                        GUICtrlSetState($Checkbox2, $GUI_CHECKED)
                        GUICtrlSetState($Checkbox3, $GUI_CHECKED)
                        GUICtrlSetState($Checkbox5, $GUI_CHECKED)
                        GUICtrlSetState($Checkbox6, $GUI_CHECKED)
                        AdlibRegister("Times", 1000)
                        ;RunWait(@WindowsDir&"\notepad.exe")
                        ;RunWait(@ScriptDir&"\IE8.EXE")
                        ;RunWait(@ScriptDir&"\ADSL.EXE")
                        ;RunWait(@ScriptDir&"\msxml.exe")
                        ;RunWait(@WindowsDir&"\REGEDIT.exe /S "&@ScriptDir&"\anti.reg")
                        ;RunWait(@ScriptDir&"\chongqi.exe")
                Case $Checkbox1
                        AdlibUnRegister()
                Case $Checkbox2
                        AdlibUnRegister()
                Case $Checkbox3
                        AdlibUnRegister()
                Case $Checkbox4
                        AdlibUnRegister()
                Case $Checkbox5
                        AdlibUnRegister()
                Case $Checkbox6
                        AdlibUnRegister()                
                Case $Button2 
            If GUICtrlRead($Checkbox1)=1 Then
            RunWait(@ScriptDir&"\IE8.EXE")
                EndIf
                        If GUICtrlRead($Checkbox2)=1 Then
            RunWait(@ScriptDir&"\ADSL.EXE")
                EndIf
                   If GUICtrlRead($Checkbox3)=1 Then
            RunWait(@ScriptDir&"\msxml.exe")
                EndIf
                   If GUICtrlRead($Checkbox4)=1 Then
            RunWait(@ScriptDir&"\net .exe")
                EndIf
                   If GUICtrlRead($Checkbox5)=1 Then
            RunWait(@WindowsDir&"\REGEDIT.exe /S "&@ScriptDir&"\anti.reg")
                EndIf
                   If GUICtrlRead($Checkbox6)=1 Then
            RunWait(@ScriptDir&"\chongqi.exe")
                EndIf
                Exit
        EndSwitch
WEnd
Func Times()
        $time -=1
        GUICtrlSetData($Label1,$time)
        If $time <= 0 Then 
                EndIf
EndFunc
还有如果代码哪里写的不好的,也请指明!谢谢!

我说一下我试了两种 一种就是上面中用 ;变成注释的那里 还有一种是在func中

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-8-29 15:17:04 | 显示全部楼层
沙发。。。。。。。。。。。。。。。。。。。。。。。支持楼主
发表于 2010-8-29 16:48:33 | 显示全部楼层
AdlibUnRegister
为什么要反注册啊,能否讲讲
 楼主| 发表于 2010-8-29 17:22:04 | 显示全部楼层
回复 3# liufenglg


  这个是为了说当我点击到选项中倒计时会停止啊!
发表于 2010-8-29 17:59:57 | 显示全部楼层
回复 1# 思夜月心

看不懂你的代码,好像方法不对。。。。给你一段代码参考一下
func Install_Select()        ;批安装 处理
        Local $ItemCount = _GUICtrlListView_GetItemCount($hListView)        ;获取 项目数        
        Local $Selected_Count = _GUICtrlListView_GetSelectedCount($hListView)
        If $Selected_Count = 0 Then ;若软件计数$Selected_Count=0 则 提示
                MsgBox (16, "提示", "未选择软件,或缺少配置文件,请检查!")
        Else
                GUISetState(@SW_HIDE, $GUI_Manager);主窗口隐藏
                $ABC = GUICtrlRead( $Drivers );读取路径输入框的路径
                ClipPut ( $ABC );向剪贴板写入路径文本.
                $A = 1 ;当前安装第?数,初值=1
                $B = $Selected_Count ;进度条步进值计算参数,初值=软件计数$Selected_Count值
                for $i = 0 to $ItemCount Step 2                ;循环检测
                        Local $lectedCount = _GUICtrlListView_GetItemChecked($hListView, $i);检测项目是否选中: True=选中
                        if $lectedCount = False Then; 如未选中,则跳过
                        Else
                                Local $ItemText = _GUICtrlListView_GetItemText($hListView, $i)        ;获取选中项的 文本
                                Local $array = StringSplit ( $ItemText, @CRLF)                                        ;拆分选中项文本,返回数组
                                Local $WS = StringStripWS($array[1],3)                                                        ;删去字符串中首、尾"空白符". 
                                Local $File_path = IniRead (@ScriptDir & "\SoftTool.ini", $WS, $Install_File_type, "");用 $WS 读取 手(自)动安装的 值
                                Dim $szDrive, $szDir, $szFName, $szExt
                                Local $TestPath = _PathSplit($File_path, $szDrive, $szDir, $szFName, $szExt)                                
                                ProgressOn("", "", "", -1, @DesktopHeight - 135, 1);创建自定义进度条窗口,安装计数进度条
                                ProgressSet(($Selected_Count-$B)/($Selected_Count/100),"共 " & $Selected_Count & " 项,当前安装第 " & $A & " 项!" _
                                        & @CRLF & @CRLF & "除非必要,不要使用鼠标、键盘,请稍候!... ", "安装:" & $TestPath[3] );设置进度条信息
                                $B -= 1 ;进度条步进值计算参数自减 1
                                If StringRight ( $File_path, 3 ) = "msi" Then
                                        RunWait( "msiexec.exe /i " & @ScriptDir & "" & $File_path)
                                Else
                                        RunWait(@ScriptDir & "" & $File_path)
                                EndIf
                                $A += 1;当前安装第计数 + 1
                                If $A > $Selected_Count Then SoftTail()
                        EndIf        
                Next                
        EndIf
EndFunc
 楼主| 发表于 2010-8-29 21:03:28 | 显示全部楼层
回复 5# 131738

不好意思!不是很明白楼上你的这段代码的意思?
发表于 2010-8-29 22:07:55 | 显示全部楼层
本帖最后由 afan 于 2010-8-29 22:09 编辑

这种透明效果反而会使界面明显不清晰啊
另外,使用$WS_POPUP样式总得给个拖动的地方吧
发表于 2010-8-29 22:53:54 | 显示全部楼层
解决了,看看lz是不是这种效果。
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $time = 8

$Form1 = GUICreate("系统可选组件更新和优化设置", 250, 150,300,300,$WS_POPUP)
GUISetBkColor(0xE0FFFF)
WinSetTrans("系统可选组件更新和优化设置","",170)
GUICtrlCreateGroup("",5,5,160,130)
$Checkbox1 = GUICtrlCreateCheckbox("安装IE8.0和更新补丁", 10, 15, 150, 15)
GUICtrlSetState(-1,$GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("建立宽带连接", 10, 35, 150, 15)
GUICtrlSetState(-1,$GUI_CHECKED)
$Checkbox3 = GUICtrlCreateCheckbox("安装微软msxml解释器", 10, 55, 150, 15)
GUICtrlSetState(-1,$GUI_CHECKED)
$Checkbox4 = GUICtrlCreateCheckbox("安装Framework2.0和3.0", 10, 75, 150, 15)
$Checkbox5 = GUICtrlCreateCheckbox("注册表优化", 10, 95, 150, 15)
GUICtrlSetState(-1,$GUI_CHECKED)
$Checkbox6 = GUICtrlCreateCheckbox("重启调用软件安装管理器", 10, 115, 150, 15)
GUICtrlSetState(-1,$GUI_CHECKED)
GUICtrlCreateGroup("",170,5,75,130)
$Button1 = GUICtrlCreateButton("默认安装",175,15,70,30)
$Button2 = GUICtrlCreateButton("手动安装",175,45,70,30)
GUISetFont(20,"","","宋体")
$Label1 = GUICtrlCreateLabel($time,200,90,70,30)
GUISetState(@SW_SHOW)


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Checkbox1,$Checkbox2,$Checkbox3,$Checkbox4,$Checkbox5,$Checkbox6
                        AdlibUnRegister()

                Case $Button1
AdlibRegister("times",1000)

                Case $Button2 
                If GUICtrlRead($Checkbox1)=1 Then
            RunWait(@ScriptDir&"\IE8.EXE")
                EndIf
                If GUICtrlRead($Checkbox2)=1 Then
            RunWait(@ScriptDir&"\ADSL.EXE")
                EndIf
                If GUICtrlRead($Checkbox3)=1 Then
            RunWait(@ScriptDir&"\msxml.exe")
                EndIf
                If GUICtrlRead($Checkbox4)=1 Then
            RunWait(@ScriptDir&"\net .exe")
                EndIf
                If GUICtrlRead($Checkbox5)=1 Then
            RunWait(@WindowsDir&"\REGEDIT.exe /S "&@ScriptDir&"\anti.reg")
                EndIf
                If GUICtrlRead($Checkbox6)=1 Then
            RunWait(@ScriptDir&"\chongqi.exe")
                EndIf
                Exit
        EndSwitch
WEnd


Func Times()
        $time -=1
        GUICtrlSetData($Label1,$time)
        If $time <= 0 Then 
MsgBox(64,"OK","倒数完毕,开始安装。")
                        ;RunWait(@WindowsDir&"\notepad.exe")
                        ;RunWait(@ScriptDir&"\IE8.EXE")
                        ;RunWait(@ScriptDir&"\ADSL.EXE")
                        ;RunWait(@ScriptDir&"\msxml.exe")
                        ;RunWait(@WindowsDir&"\REGEDIT.exe /S "&@ScriptDir&"\anti.reg")
                        ;RunWait(@ScriptDir&"\chongqi.exe")
Exit
                EndIf
EndFunc

评分

参与人数 2金钱 +30 收起 理由
思夜月心 + 10 谢谢一同哥啊!试了觉得可以用!
afan + 20

查看全部评分

 楼主| 发表于 2010-8-30 22:36:35 | 显示全部楼层
回复 7# afan


    谢谢AFAN的提醒!在下面SKY808的源码上有修正!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 22:55 , Processed in 0.080839 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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