找回密码
 加入
搜索
查看: 9815|回复: 21

[AU3基础] 仿软件安装脚本,注册码部分卡壳了,请求帮助!谢谢!!![ 已解决 ]

 火.. [复制链接]
发表于 2010-7-15 22:15:13 | 显示全部楼层 |阅读模式
本帖最后由 131738 于 2010-7-16 01:03 编辑




附上未完成的代码,问题附在脚本的注释内,在脚本底部,请高手帮忙测试到第三步:随意输入注册码,

就能发现问题,请帮助修改,或指点迷津,谢谢!!!!
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>

Global $stp = 1, $Input1, $Input2, $Input3, $Input4, $Input5
Global $Input
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("模拟安装", 503, 361, -1, -1)
# 图片控件
$Pic1 = GUICtrlCreatePic("G:\模拟安装软件\01.bmp", 0, 0, 165, 315) ;图标控件
        GUICtrlSetState($Pic1, $gui_hide) ;图标控件隐藏
$Pic2 = GUICtrlCreatePic("G:\模拟安装软件\02.bmp", 30, 65, 105, 220)
        GUICtrlSetState($Pic1, $gui_hide) ;图标控件隐藏

# 注册部分专用控件
$Label3_1 = GUICtrlCreateLabel("请输入您的产品序列号", 170, 65, 250, 20) ;标签
        GUICtrlSetState(-1, $gui_hide)         ; 隐藏
$Input1 = GUICtrlCreateInput("", 160, 90, 75, 21)
        GUICtrlSetState(-1, $gui_hide)         ; 隐藏        
$Input2 = GUICtrlCreateInput("", 240, 90, 75, 21)
        GUICtrlSetState(-1, $gui_hide)         ; 隐藏
$Input3 = GUICtrlCreateInput("", 320, 90, 75, 21)
        GUICtrlSetState(-1, $gui_hide)         ; 隐藏
$Input4 = GUICtrlCreateInput("", 400, 90, 75, 21)
        GUICtrlSetState(-1, $gui_hide)         ; 隐藏
$Input5 = GUICtrlCreateInput("123456789", 240, 120, 75, 21)
        GUICtrlSetState(-1, $gui_hide)         ; 隐藏
$Label3_1 = GUICtrlCreateLabel("请输入您的产品序列号", 170, 65, 250, 20) ;标签        
        GUICtrlSetState(-1, $gui_hide)         ; 隐藏
#Region 图形控件
$Graphic01 = GUICtrlCreateGraphic(0, 0, 504, 315) ;图形控件
GUICtrlSetBkColor(-1, 0xffffff) ;图形控件背景色
GUICtrlSetState(-1, $gui_hide) ;图标控件隐藏
$Graphic02 = GUICtrlCreateGraphic(0, 0, 504, 54) ;图形控件
GUICtrlSetBkColor(-1, 0xffffff) ;图形控件背景色
GUICtrlSetState(-1, $gui_hide)
#EndRegion
;
#Region 标签控件
$Label1 = GUICtrlCreateLabel("1", 180, 16, 310, 30) ;标签
        GUICtrlSetFont(-1, 14, 600, 0, "宋体_GB2312") ;标签字体
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2 = GUICtrlCreateLabel("2", 180, 45, 310, 20) ;标签-01
        GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label3 = GUICtrlCreateLabel("3", 180, 70, 310, 20) ;标签
        GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label4 = GUICtrlCreateLabel("4", 180, 95, 310, 20) ;标签
        GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label5 = GUICtrlCreateLabel("5", 180, 120, 310, 20) ;标签
        GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
        $Label6 = GUICtrlCreateLabel("6", 180, 145, 310, 20) ;标签
        GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2_1 = GUICtrlCreateLabel("请仔细阅读下列许可协议。" _
                 & "您在继续安装前必须同意这些条款。", 20, 65, 460, 20) ;标签
        GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体         
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明         
$Label2_2 = GUICtrlCreateLabel("", 30, 10, 200, 20) ;标签
        GUICtrlSetFont(-1, 10, 600, 0, "宋体_GB2312") ;标签字体
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2_3 = GUICtrlCreateLabel("", 40, 30, 200, 20) ;标签
        GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明        
#EndRegion 标签控件
;
#Region 许可协议框
$Edit1 = GUICtrlCreateEdit("", 20, 90, 463, 170, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), _
                BitOR($WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE))
        GUICtrlSetBkColor(-1, 0xffffff) ;编辑控件背景色
        GUICtrlSetData(-1, "软件许可协议" & @CRLF & @CRLF _
                & "  重要须知:迅雷在此特别提醒用户认真阅读本《软件许可协议》--- 用户应认真" & @CRLF _
                & "阅读本《软件许可协议》 (下称《协议》)中各条款, 包括免除或者限制迅雷责任" & @CRLF _
                & "的免责条款及对用户的权利限制。请您审阅并接受或不接受本《协议》(未成年人" & @CRLF _
                & "应在法定监护人陪同下审阅)。除非您接受本《协议》条款,否则您无权下载、安" & @CRLF _
                & "装或使用本软件及其相关服务。您的安装使用行为将视为对本《协议》的接受,并" & @CRLF _
                & "同意接受本《协议》各项条款的约束。" _
                & @CRLF & @CRLF & '  本《协议》是用户与迅雷公司(下称"迅雷")之间关于用户下载、安装、使用、复' & @CRLF _
                & '制"迅雷客户端"软件, (以下简称"软件")所订立的协议。本《协议》描述迅雷与用' & @CRLF _
                & '户之间关于"软件"许可使用及相关方面的权利义务。"用户"或"您"是指通过迅雷提' & @CRLF _
                & '供的获取软件授权的途径获得软件授权许可和/或软件产品的个人或单一实体。' _
                & @CRLF & @CRLF & '1     权利声明' _
                & @CRLF & @CRLF & '本"软件"由迅雷公司开发。本"软件"的一切版权等知识产权,以及与"软')
        ControlFocus ( "模拟安装", "", $Edit1 )

$Radio1 = GUICtrlCreateRadio("我同意此协议(&A)", 20, 270, 113, 17)
        GUICtrlSetState($Radio1, $gui_hide) ;调整指定控件的状态
        GUICtrlSetState($Radio1, $gui_hide)
$Radio2 = GUICtrlCreateRadio("我不同意此协议(&D)", 20, 290, 120, 17)
        GUICtrlSetState($Radio2, $gui_hide) ;调整指定控件的状态 ; 隐藏
        GUICtrlSetState($Radio2, $GUI_CHECKED)

;$Radio3 = GUICtrlCreateRadio("C.传统纸媒", 120, 128, 121, 25)
;GUICtrlSetState($Radio3, $gui_hide)        ;调整指定控件的状态 ; 隐藏
#EndRegion
;
$Button0 = GUICtrlCreateButton("取消", 410, 330, 80, 21, 0)

$Button1 = GUICtrlCreateButton("< 上一步(&B)", 225, 330, 80, 21, 0)
$Button2 = GUICtrlCreateButton("下一步(&N) >", 316, 330, 80, 21, 0)

GUICtrlCreateLabel("", 0, 315, 505, 1, $SS_SUNKEN + $SS_ETCHEDHORZ);装饰标签
$Label0 = GUICtrlCreateLabel("", 0, 54, 505, 1, $SS_SUNKEN + $SS_ETCHEDHORZ);装饰标签
GUISetState(@SW_SHOW)
#EndRegion ### START Koda GUI section ### Form=
;
step1(1)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1 ; "< 上一步[&B]"
                        Call("step" & $stp, 0);调用用户自定义函数
                        $stp -= 1
                        Call("step" & $stp, 1)
                Case $Button2 ; "下一步[&N] >"
                        If GUICtrlRead($Button2) = "完成[&F]" Then
                                Exit
                        EndIf
                        Call("step" & $stp, 0)
                        $stp += 1
                        Call("step" & $stp, 1)
                Case $Button0
                        _Exit()
        EndSwitch
WEnd

Func step1($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "模拟安装 - 欢迎使用");修改指定窗口的标题
                GUICtrlSetState($Pic1, $gui_show) ;显示图像 1
                GUICtrlSetState($Pic2, $gui_hide) ;隐藏图像 2
                GUICtrlSetState($Graphic01, $gui_show) ;显示图形
                # 隐藏控件
                GUICtrlSetState($Button1,  $gui_hide)         ;隐藏按钮 1
                GUICtrlSetState($Edit1,    $gui_hide)         ;隐藏编辑框
                GUICtrlSetState($Label0,   $gui_hide)         ;隐藏装饰标签
                GUICtrlSetState($Label2_1, $gui_hide)         ; 隐藏标签 2-1
                GUICtrlSetState($Label2_2, $gui_hide)         ; 隐藏标签 2-2
                GUICtrlSetState($Label2_3, $gui_hide)         ; 隐藏标签 2-3
                GUICtrlSetState($Label3_1, $gui_hide)         ; 隐藏标签 3-1
                ;GUICtrlSetState(, $gui_hide)
                GUICtrlSetState($Radio1,   $gui_hide)
                GUICtrlSetState($Radio2,   $gui_hide)                
                # 显示并修改文本标签 1 - 6
                GUICtrlSetState($Label1, $gui_show)
                GUICtrlSetData($Label1, "欢迎使用 模拟安装 演示向导")
                GUICtrlSetState($Label2, $gui_show)
                GUICtrlSetData($Label2, "现在将开始工具软件的模拟安装")
                GUICtrlSetState($Label3, $gui_show)
                GUICtrlSetData($Label3, "这是专为初学安装脚本编写者设计的")
                GUICtrlSetState($Label4, $gui_show)
                GUICtrlSetData($Label4, "免除你为学习写脚本而反复安装、卸载的烦恼!")
                GUICtrlSetState($Label5, $gui_show)
                GUICtrlSetData($Label5, "整个可见过程与真实软件安装完全一样!")
                GUICtrlSetState($Label6, $gui_show)                
                GUICtrlSetData($Label6, "但系统后台绝无任何实际操作!不需事后的卸载!")
        Else
                GUICtrlSetState($Button1, $gui_enable) ;调整指定控件的状态
                GUICtrlSetState($Radio1, $gui_hide)
                GUICtrlSetState($Radio2, $gui_hide)
        EndIf
EndFunc   ;==>step1

Func Step2($x)        
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "模拟安装 - 许可协议");修改指定窗口的标题
                GUICtrlSetData($Label2_2, "许可协议")
                GUICtrlSetData($Label2_3, "继续安装前请阅读下列重要信息。")
                GUICtrlSetState($Graphic01, $gui_hide) ;隐藏图形01
                GUICtrlSetState($Graphic02, $gui_show) ;显示图形02
                GUICtrlSetState($Pic1, $gui_hide) ; 隐藏图像
                GUICtrlSetState($Label2_2, $gui_show) ; 显示标签 2-2
                GUICtrlSetState($Label2_3, $gui_show) ; 显示标签 2-3
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetState($Label0, $gui_show) ;显示装饰标签
                GUICtrlSetState($Radio1, $gui_show) ;显示协议选择单选框
                GUICtrlSetState($Radio2, $gui_show) ;显示协议选择单选框
                # 隐藏文本标签 1 - 6
                GUICtrlSetState($Label1, $gui_hide) ;隐藏标签 -1
                GUICtrlSetState($Label2, $gui_hide) ;隐藏标签 -2
                GUICtrlSetState($Label3, $gui_hide) ;隐藏标签 -3
                GUICtrlSetState($Label4, $gui_hide) ;隐藏标签 -4
                GUICtrlSetState($Label5, $gui_hide) ;隐藏标签 -5
                GUICtrlSetState($Label6, $gui_hide) ;隐藏标签 -6
                GUICtrlSetState($Label2_1, $gui_show);显示标签 2-1                
                GUICtrlSetState($Edit1, $gui_show) ;显示编辑框
                
        Else

        EndIf
        AdlibRegister("_disposal", 500);注册 Adlib 函数:_disposal
        _disposal()
EndFunc   ;==>Step2

Func step3($x)
        If $x = 1 Then
                AdlibUnRegister("_disposal");注销 adlib 函数:_disposal
                WinSetTitle("模拟安装", "", "模拟安装 - 用户注册");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetState($Label2_1, $gui_hide) ;隐藏标签 2-1
                GUICtrlSetState($Radio1, $gui_hide) ;调整指定控件的状态 ; 隐藏
                GUICtrlSetState($Radio2, $gui_hide) ;调整指定控件的状态 ; 隐藏
                GUICtrlSetState($Edit1, $gui_hide) ;调整指定控件的状态 ; 隐藏
                # 显示注册控件
                GUICtrlSetState($Input1,    $gui_show)
                GUICtrlSetState($Input2,    $gui_show)
                GUICtrlSetState($Input3,    $gui_show)
                GUICtrlSetState($Input4,    $gui_show)
                
                GUICtrlSetState($Pic2,    $gui_show)
                GUICtrlSetState($Label3_1,$gui_show)                
        # 修改文本标签
                GUICtrlSetData($Label2_2, "验证产品序列号和用户ID")
                GUICtrlSetData($Label2_3, "请输入您的产品序列号和用户ID")
                        
        Else ;否则, 下一画面的[ 上一步 ] 按钮点击处理
                # 隐藏控件
                GUICtrlSetState($Edit1,    $gui_hide) ;调整指定控件的状态 ; 显示
                GUICtrlSetState($Radio1,   $gui_hide) ;调整指定控件的状态 ; 隐藏
                GUICtrlSetState($Radio2,   $gui_hide) ;调整指定控件的状态 ; 隐藏
                GUICtrlSetState($Input1,  $gui_hide)
                GUICtrlSetState($Input2,  $gui_hide)
                GUICtrlSetState($Input3,  $gui_hide)
                GUICtrlSetState($Input4,  $gui_hide)
                GUICtrlSetState($Pic2,    $gui_hide)
                GUICtrlSetState($Label3_1,$gui_hide)
        EndIf
        AdlibRegister("_register", 50);注册 Adlib 函数:_disposal
        _register()
EndFunc   ;==>step3

Func step4($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "模拟安装 - 选择附件");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加04") ; 修改指定控件的数据
        Else

        EndIf
EndFunc   ;==>step4

Func step5($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "模拟安装 - 推荐工具");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加05") ; 修改指定控件的数据
        Else

        EndIf
EndFunc   ;==>step5

Func step6($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "模拟安装 - 安装位置");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加06") ; 修改指定控件的数据
        Else

        EndIf
EndFunc   ;==>step6

Func step7($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "准备安装");修改指定窗口的标题
                GUICtrlSetData($Button2, "安装(&I)")
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加07") ; 修改指定控件的数据
        Else

        EndIf
EndFunc   ;==>step7

Func step8($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "新标题===08");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加08") ; 修改指定控件的数据
        Else

        EndIf
EndFunc   ;==>step8

Func step9($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "新标题XXX09");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加09") ; 修改指定控件的数据
        Else

        EndIf
EndFunc   ;==>step9

Func step10($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "新标题XXX09");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加09") ; 修改指定控件的数据
        Else

        EndIf
EndFunc   ;==>step10

Func _disposal()
        If GUICtrlRead($Radio1) = $GUI_CHECKED Then
                GUICtrlSetState($Button2, $gui_enable)
        Else
                GUICtrlSetState($Button2, $GUI_DISABLE)
        EndIf
        Return
EndFunc   ;==>_disposal
# ======= 请你帮忙修改下面的  监视注册码 输入处理函数 ======
# ======= 第一个输入框 6 位输入后, 焦点自动转到第二的输入框后,输入 1 个字符后不能操作了......
Func _register();监视 注册码输入:
# 如果 字符数(读数据(输入框)) = 6  则  调整焦点到下一输入框
        If StringLen(GUICtrlRead($Input1))= 6 Then 
                GUICtrlSetState($Input2, $GUI_FOCUS);调整焦点
        Else
                Return; ***** 问题出在这里, 但不知如何写处理代码 ?
        EndIf
        If StringLen(GUICtrlRead($Input2))= 6 Then 
                GUICtrlSetState($Input3, $GUI_FOCUS);调整焦点
        Else
                Return
        EndIf
        If StringLen(GUICtrlRead($Input3))= 6 Then 
                GUICtrlSetState($Input4, $GUI_FOCUS);调整焦点
        Else
                Return
        EndIf
# 如果注册码输入完成,则读输入的注册码:        
        If StringLen(GUICtrlRead($Input4))= 6 Then 
                Local $len01 = GUICtrlRead ( $Input1 )
                Local $len02 = GUICtrlRead ( $Input2 )
                Local $len03 = GUICtrlRead ( $Input3 )
                Local $len04 = GUICtrlRead ( $Input4 )
        EndIf
# 判断注册码是否正确:
        If GUICtrlRead ( $Input1 ) = "aaa222" And GUICtrlRead ( $Input2 ) = "bbb333" _
                        And GUICtrlRead ( $Input3 ) = "ccc444" And GUICtrlRead ( $Input4 ) = "ddd555" Then
                GUICtrlSetState($Input5,  $gui_show); 显示用户ID输入框
        ;ElseIf GUICtrlRead ( $Input1 ) = "" Then
                ;GUICtrlSetData($Label3_1,"请输入您的产品序列号。")
        Else        
                GUICtrlSetData($Label3_1,"您输入的产品序列号不正确,请重新输入。")
        EndIf
EndFunc 

Func _Exit()
        Dim $iMsgBoxAnswer
        $iMsgBoxAnswer = MsgBox(262180, "退出安装程序", "安装程序未完成安装。如果您现在退出,您的程序将不能安装。" _
                         & @CRLF & "" & @CRLF & "您可以以后再运行安装程序完成安装。" _
                         & @CRLF & "" & @CRLF & "退出安装程序吗?")
        Select
                Case $iMsgBoxAnswer = 6 ;Yes

                Case $iMsgBoxAnswer = 7 ;No

        EndSelect
EndFunc   ;==>_Exit

本帖子中包含更多资源

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

×

评分

参与人数 1贡献 +3 收起 理由
styledream + 3 学习了

查看全部评分

发表于 2010-7-15 23:36:18 | 显示全部楼层
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
Global $stp = 1, $Input1, $Input2, $Input3, $Input4, $Input5, $Input1ok, $Input2ok, $Input3ok, $Input4ok;声明一下
Global $Input
$Form1 = GUICreate("模拟安装", 503, 361, -1, -1)
; 图片控件
$Pic1 = GUICtrlCreatePic("G:\模拟安装软件\01.bmp", 0, 0, 165, 315) ;图标控件
GUICtrlSetState($Pic1, $gui_hide) ;图标控件隐藏
$Pic2 = GUICtrlCreatePic("G:\模拟安装软件\02.bmp", 30, 65, 105, 220)
GUICtrlSetState($Pic1, $gui_hide) ;图标控件隐藏
; 注册部分专用控件
$Label3_1 = GUICtrlCreateLabel("请输入您的产品序列号", 170, 65, 250, 20) ;标签
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input1 = GUICtrlCreateInput("", 160, 90, 75, 21)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input2 = GUICtrlCreateInput("", 240, 90, 75, 21)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input3 = GUICtrlCreateInput("", 320, 90, 75, 21)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input4 = GUICtrlCreateInput("", 400, 90, 75, 21)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input5 = GUICtrlCreateInput("123456789", 240, 120, 75, 21)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Label3_1 = GUICtrlCreateLabel("请输入您的产品序列号", 170, 65, 250, 20) ;标签
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Graphic01 = GUICtrlCreateGraphic(0, 0, 504, 315) ;图形控件
GUICtrlSetBkColor(-1, 0xffffff) ;图形控件背景色
GUICtrlSetState(-1, $gui_hide) ;图标控件隐藏
$Graphic02 = GUICtrlCreateGraphic(0, 0, 504, 54) ;图形控件
GUICtrlSetBkColor(-1, 0xffffff) ;图形控件背景色
GUICtrlSetState(-1, $gui_hide)
$Label1 = GUICtrlCreateLabel("1", 180, 16, 310, 30) ;标签
GUICtrlSetFont(-1, 14, 600, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2 = GUICtrlCreateLabel("2", 180, 45, 310, 20) ;标签-01
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label3 = GUICtrlCreateLabel("3", 180, 70, 310, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label4 = GUICtrlCreateLabel("4", 180, 95, 310, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label5 = GUICtrlCreateLabel("5", 180, 120, 310, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label6 = GUICtrlCreateLabel("6", 180, 145, 310, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2_1 = GUICtrlCreateLabel("请仔细阅读下列许可协议。" _
   & "您在继续安装前必须同意这些条款。", 20, 65, 460, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2_2 = GUICtrlCreateLabel("", 30, 10, 200, 20) ;标签
GUICtrlSetFont(-1, 10, 600, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2_3 = GUICtrlCreateLabel("", 40, 30, 200, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Edit1 = GUICtrlCreateEdit("", 20, 90, 463, 170, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), _
  BitOR($WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE))
GUICtrlSetBkColor(-1, 0xffffff) ;编辑控件背景色
GUICtrlSetData(-1, "软件许可协议" & @CRLF & @CRLF _
   & "  重要须知:迅雷在此特别提醒用户认真阅读本《软件许可协议》--- 用户应认真" & @CRLF _
   & "阅读本《软件许可协议》 (下称《协议》)中各条款, 包括免除或者限制迅雷责任" & @CRLF _
   & "的免责条款及对用户的权利限制。请您审阅并接受或不接受本《协议》(未成年人" & @CRLF _
   & "应在法定监护人陪同下审阅)。除非您接受本《协议》条款,否则您无权下载、安" & @CRLF _
   & "装或使用本软件及其相关服务。您的安装使用行为将视为对本《协议》的接受,并" & @CRLF _
   & "同意接受本《协议》各项条款的约束。" _
   & @CRLF & @CRLF & '  本《协议》是用户与迅雷公司(下称"迅雷")之间关于用户下载、安装、使用、复' & @CRLF _
   & '制"迅雷客户端"软件, (以下简称"软件")所订立的协议。本《协议》描述迅雷与用' & @CRLF _
   & '户之间关于"软件"许可使用及相关方面的权利义务。"用户"或"您"是指通过迅雷提' & @CRLF _
   & '供的获取软件授权的途径获得软件授权许可和/或软件产品的个人或单一实体。' _
   & @CRLF & @CRLF & '1     权利声明' _
   & @CRLF & @CRLF & '本"软件"由迅雷公司开发。本"软件"的一切版权等知识产权,以及与"软')
ControlFocus("模拟安装", "", $Edit1)
$Radio1 = GUICtrlCreateRadio("我同意此协议(&A)", 20, 270, 113, 17)
GUICtrlSetState($Radio1, $gui_hide) ;调整指定控件的状态
GUICtrlSetState($Radio1, $gui_hide)
$Radio2 = GUICtrlCreateRadio("我不同意此协议(&D)", 20, 290, 120, 17)
GUICtrlSetState($Radio2, $gui_hide) ;调整指定控件的状态 ; 隐藏
GUICtrlSetState($Radio2, $GUI_CHECKED)
$Button0 = GUICtrlCreateButton("取消", 410, 330, 80, 21, 0)
$Button1 = GUICtrlCreateButton("< 上一步(&B)", 225, 330, 80, 21, 0)
$Button2 = GUICtrlCreateButton("下一步(&N) >", 316, 330, 80, 21, 0)
GUICtrlCreateLabel("", 0, 315, 505, 1, $SS_SUNKEN + $SS_ETCHEDHORZ);装饰标签
$Label0 = GUICtrlCreateLabel("", 0, 54, 505, 1, $SS_SUNKEN + $SS_ETCHEDHORZ);装饰标签
GUISetState(@SW_SHOW)
step1(1)
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit
  Case $Button1 ; "< 上一步[&B]"
   Call("step" & $stp, 0);调用用户自定义函数
   $stp -= 1
   Call("step" & $stp, 1)
  Case $Button2 ; "下一步[&N] >"
   If GUICtrlRead($Button2) = "完成[&F]" Then
    Exit
   EndIf
   Call("step" & $stp, 0)
   $stp += 1
   Call("step" & $stp, 1)
  Case $Button0
   _Exit()
 EndSwitch
WEnd
Func step1($x)
 If $x = 1 Then
  WinSetTitle("模拟安装", "", "模拟安装 - 欢迎使用");修改指定窗口的标题
  GUICtrlSetState($Pic1, $gui_show) ;显示图像 1
  GUICtrlSetState($Pic2, $gui_hide) ;隐藏图像 2
  GUICtrlSetState($Graphic01, $gui_show) ;显示图形
  ; 隐藏控件
  GUICtrlSetState($Button1, $gui_hide) ;隐藏按钮 1
  GUICtrlSetState($Edit1, $gui_hide) ;隐藏编辑框
  GUICtrlSetState($Label0, $gui_hide) ;隐藏装饰标签
  GUICtrlSetState($Label2_1, $gui_hide) ; 隐藏标签 2-1
  GUICtrlSetState($Label2_2, $gui_hide) ; 隐藏标签 2-2
  GUICtrlSetState($Label2_3, $gui_hide) ; 隐藏标签 2-3
  GUICtrlSetState($Label3_1, $gui_hide) ; 隐藏标签 3-1
  ;GUICtrlSetState(, $gui_hide)
  GUICtrlSetState($Radio1, $gui_hide)
  GUICtrlSetState($Radio2, $gui_hide)
  ; 显示并修改文本标签 1 - 6
  GUICtrlSetState($Label1, $gui_show)
  GUICtrlSetData($Label1, "欢迎使用 模拟安装 演示向导")
  GUICtrlSetState($Label2, $gui_show)
  GUICtrlSetData($Label2, "现在将开始工具软件的模拟安装")
  GUICtrlSetState($Label3, $gui_show)
  GUICtrlSetData($Label3, "这是专为初学安装脚本编写者设计的")
  GUICtrlSetState($Label4, $gui_show)
  GUICtrlSetData($Label4, "免除你为学习写脚本而反复安装、卸载的烦恼!")
  GUICtrlSetState($Label5, $gui_show)
  GUICtrlSetData($Label5, "整个可见过程与真实软件安装完全一样!")
  GUICtrlSetState($Label6, $gui_show)
  GUICtrlSetData($Label6, "但系统后台绝无任何实际操作!不需事后的卸载!")
 Else
  GUICtrlSetState($Button1, $gui_enable) ;调整指定控件的状态
  GUICtrlSetState($Radio1, $gui_hide)
  GUICtrlSetState($Radio2, $gui_hide)
 EndIf
EndFunc   ;==>step1
Func Step2($x)
 If $x = 1 Then
  WinSetTitle("模拟安装", "", "模拟安装 - 许可协议");修改指定窗口的标题
  GUICtrlSetData($Label2_2, "许可协议")
  GUICtrlSetData($Label2_3, "继续安装前请阅读下列重要信息。")
  GUICtrlSetState($Graphic01, $gui_hide) ;隐藏图形01
  GUICtrlSetState($Graphic02, $gui_show) ;显示图形02
  GUICtrlSetState($Pic1, $gui_hide) ; 隐藏图像
  GUICtrlSetState($Label2_2, $gui_show) ; 显示标签 2-2
  GUICtrlSetState($Label2_3, $gui_show) ; 显示标签 2-3
  GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
  GUICtrlSetState($Label0, $gui_show) ;显示装饰标签
  GUICtrlSetState($Radio1, $gui_show) ;显示协议选择单选框
  GUICtrlSetState($Radio2, $gui_show) ;显示协议选择单选框
  ; 隐藏文本标签 1 - 6
  GUICtrlSetState($Label1, $gui_hide) ;隐藏标签 -1
  GUICtrlSetState($Label2, $gui_hide) ;隐藏标签 -2
  GUICtrlSetState($Label3, $gui_hide) ;隐藏标签 -3
  GUICtrlSetState($Label4, $gui_hide) ;隐藏标签 -4
  GUICtrlSetState($Label5, $gui_hide) ;隐藏标签 -5
  GUICtrlSetState($Label6, $gui_hide) ;隐藏标签 -6
  GUICtrlSetState($Label2_1, $gui_show);显示标签 2-1
  GUICtrlSetState($Edit1, $gui_show) ;显示编辑框
 Else
 EndIf
 $Input1ok = False
 $Input2ok = False
 $Input3ok = False
 $Input4ok = False;设置布尔值
 AdlibRegister("_disposal", 500);注册 Adlib 函数:_disposal
 _disposal()
EndFunc   ;==>Step2
Func step3($x)
 If $x = 1 Then
  AdlibUnRegister("_disposal");注销 adlib 函数:_disposal
  WinSetTitle("模拟安装", "", "模拟安装 - 用户注册");修改指定窗口的标题
  GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
  GUICtrlSetState($Label2_1, $gui_hide) ;隐藏标签 2-1
  GUICtrlSetState($Radio1, $gui_hide) ;调整指定控件的状态 ; 隐藏
  GUICtrlSetState($Radio2, $gui_hide) ;调整指定控件的状态 ; 隐藏
  GUICtrlSetState($Edit1, $gui_hide) ;调整指定控件的状态 ; 隐藏
  ; 显示注册控件
  GUICtrlSetState($Input1, $gui_show)
  GUICtrlSetState($Input2, $gui_show)
  GUICtrlSetState($Input3, $gui_show)
  GUICtrlSetState($Input4, $gui_show)
  GUICtrlSetState($Pic2, $gui_show)
  GUICtrlSetState($Label3_1, $gui_show)
  ; 修改文本标签
  GUICtrlSetData($Label2_2, "验证产品序列号和用户ID")
  GUICtrlSetData($Label2_3, "请输入您的产品序列号和用户ID")
 Else ;否则, 下一画面的[ 上一步 ] 按钮点击处理
  ; 隐藏控件
  GUICtrlSetState($Edit1, $gui_hide) ;调整指定控件的状态 ; 显示
  GUICtrlSetState($Radio1, $gui_hide) ;调整指定控件的状态 ; 隐藏
  GUICtrlSetState($Radio2, $gui_hide) ;调整指定控件的状态 ; 隐藏
  GUICtrlSetState($Input1, $gui_hide)
  GUICtrlSetState($Input2, $gui_hide)
  GUICtrlSetState($Input3, $gui_hide)
  GUICtrlSetState($Input4, $gui_hide)
  GUICtrlSetState($Pic2, $gui_hide)
  GUICtrlSetState($Label3_1, $gui_hide)
 EndIf
 AdlibRegister("_register", 50);注册 Adlib 函数:_disposal
 _register()
EndFunc   ;==>step3
Func step4($x)
 If $x = 1 Then
  WinSetTitle("模拟安装", "", "模拟安装 - 选择附件");修改指定窗口的标题
  GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
  GUICtrlSetData($Label2, "添加04") ; 修改指定控件的数据
 Else
 EndIf
EndFunc   ;==>step4
Func step5($x)
 If $x = 1 Then
  WinSetTitle("模拟安装", "", "模拟安装 - 推荐工具");修改指定窗口的标题
  GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
  GUICtrlSetData($Label2, "添加05") ; 修改指定控件的数据
 Else
 EndIf
EndFunc   ;==>step5
Func step6($x)
 If $x = 1 Then
  WinSetTitle("模拟安装", "", "模拟安装 - 安装位置");修改指定窗口的标题
  GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
  GUICtrlSetData($Label2, "添加06") ; 修改指定控件的数据
 Else
 EndIf
EndFunc   ;==>step6
Func step7($x)
 If $x = 1 Then
  WinSetTitle("模拟安装", "", "准备安装");修改指定窗口的标题
  GUICtrlSetData($Button2, "安装(&I)")
  GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
  GUICtrlSetData($Label2, "添加07") ; 修改指定控件的数据
 Else
 EndIf
EndFunc   ;==>step7
Func step8($x)
 If $x = 1 Then
  WinSetTitle("模拟安装", "", "新标题===08");修改指定窗口的标题
  GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
  GUICtrlSetData($Label2, "添加08") ; 修改指定控件的数据
 Else
 EndIf
EndFunc   ;==>step8
Func step9($x)
 If $x = 1 Then
  WinSetTitle("模拟安装", "", "新标题XXX09");修改指定窗口的标题
  GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
  GUICtrlSetData($Label2, "添加09") ; 修改指定控件的数据
 Else
 EndIf
EndFunc   ;==>step9
Func step10($x)
 If $x = 1 Then
  WinSetTitle("模拟安装", "", "新标题XXX09");修改指定窗口的标题
  GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
  GUICtrlSetData($Label2, "添加09") ; 修改指定控件的数据
 Else
 EndIf
EndFunc   ;==>step10
Func _disposal()
 If GUICtrlRead($Radio1) = $GUI_CHECKED Then
  GUICtrlSetState($Button2, $gui_enable)
 Else
  GUICtrlSetState($Button2, $GUI_DISABLE)
 EndIf
 Return
EndFunc   ;==>_disposal
; ======= 请你帮忙修改下面的  监视注册码 输入处理函数 ======
; ======= 第一个输入框 6 位输入后, 焦点自动转到第二的输入框后,输入 1 个字符后不能操作了......
Func _register();监视 注册码输入:
 ; 如果 字符数(读数据(输入框)) = 6  则  调整焦点到下一输入框
 If StringLen(GUICtrlRead($Input1)) = 6 And $Input1ok = False Then
  GUICtrlSetState($Input2, $GUI_FOCUS);调整焦点
  $Input1ok = True
 Else
 EndIf
 If StringLen(GUICtrlRead($Input2)) = 6 And $Input2ok = False Then
  GUICtrlSetState($Input3, $GUI_FOCUS);调整焦点
  $Input2ok = True
 Else
 EndIf
 If StringLen(GUICtrlRead($Input3)) = 6 And $Input3ok = False Then
  GUICtrlSetState($Input4, $GUI_FOCUS);调整焦点
  $Input3ok = True
  $Input4ok = True
 Else
 EndIf
 If StringLen(GUICtrlRead($Input4)) = 6 And $Input4ok = True Then
  Local $len01 = GUICtrlRead($Input1); 如果注册码输入完成,则读输入的注册码:
  Local $len02 = GUICtrlRead($Input2)
  Local $len03 = GUICtrlRead($Input3)
  Local $len04 = GUICtrlRead($Input4)
  If GUICtrlRead($Input1) = "aaa222" And GUICtrlRead($Input2) = "bbb333" _
    And GUICtrlRead($Input3) = "ccc444" And GUICtrlRead($Input4) = "ddd555" Then; 判断注册码是否正确:
    GUICtrlSetData($Label3_1, "您输入的产品序列号正确,请输入用户ID:")
   GUICtrlSetState($Input5, $gui_show); 显示用户ID输入框
  Else
   GUICtrlSetData($Label3_1, "您输入的产品序列号不正确,请重新输入。")
   GUICtrlSetData($Input1, '')
   GUICtrlSetData($Input2, '')
   GUICtrlSetData($Input3, '')
   GUICtrlSetData($Input4, '')
   $Input1ok = False
   $Input2ok = False
   $Input3ok = False
   $Input4ok = False
   GUICtrlSetState($Input1, $GUI_FOCUS)
  EndIf
 Else
 EndIf
EndFunc   ;==>_register
Func _Exit()
 Dim $iMsgBoxAnswer
 $iMsgBoxAnswer = MsgBox(262180, "退出安装程序", "安装程序未完成安装。如果您现在退出,您的程序将不能安装。" _
    & @CRLF & "" & @CRLF & "您可以以后再运行安装程序完成安装。" _
    & @CRLF & "" & @CRLF & "退出安装程序吗?")
 Select
  Case $iMsgBoxAnswer = 6 ;Yes
  Case $iMsgBoxAnswer = 7 ;No
 EndSelect
EndFunc   ;==>_Exit

本帖子中包含更多资源

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

×

评分

参与人数 2金钱 +110 贡献 +20 收起 理由
131738 + 80 + 20 先品分,再看脚本。。。 谢谢了。。。。。
afan + 30

查看全部评分

发表于 2010-7-16 00:31:43 | 显示全部楼层
序列号输入时如果手动改变光标的位置(比如返回编辑),自动跳转就失效了,有些麻烦…
发表于 2010-7-16 00:35:01 | 显示全部楼层
十分强悍的东东!!!
 楼主| 发表于 2010-7-16 00:43:01 | 显示全部楼层
回复 3# afan

只好一错到底,然后脚本自动刷新,再重来一遍了。。。。
 楼主| 发表于 2010-7-16 00:48:36 | 显示全部楼层
回复 2# lynfr8

谢谢!!!!!!!!!

xp 下捣鼓了好久,故障依旧,且复制下来的代码也不规范。。。

切换到 Win 7  才搞定。。。看来 Xp 中 “奖” 了。。。。
发表于 2010-7-16 01:08:39 | 显示全部楼层
论坛有输入框自动跳转的例子,sanhen兄写的。
 楼主| 发表于 2010-7-16 01:14:41 | 显示全部楼层
本帖最后由 131738 于 2010-7-16 01:19 编辑

回复 7# pusofalse

好像看过了。。。不过那是循环生成输入框,没有固定可见的控件ID, 切换界面后,输入框的隐藏、显示不知如何操作。。。。

谢谢指点!!!!
发表于 2010-7-16 01:16:29 | 显示全部楼层
回复 8# 131738


    自动跳转我在你的基础上貌似已经修改好了,我再看看其他的~
 楼主| 发表于 2010-7-16 01:18:18 | 显示全部楼层
回复 9# afan

谢谢!!!!!!!!代码呢。。。。。。。。
发表于 2010-7-16 01:19:28 | 显示全部楼层
回复 10# 131738


    我再改改其它部分,一会就贴上
 楼主| 发表于 2010-7-16 01:20:13 | 显示全部楼层
回复 11# afan

ok。。。。。。。。。。。
 楼主| 发表于 2010-7-16 01:21:35 | 显示全部楼层
回复 11# afan

能优化一下就最好了。。。。。。
发表于 2010-7-16 01:45:10 | 显示全部楼层
回复  afan

能优化一下就最好了。。。。。。
131738 发表于 2010-7-16 01:21


没时间优化啊~ 前辈自己悠悠吧~ 仅改了以下几处,没细看~
;许可协议框 加入 $ES_READONLY 使之不可编辑
;取消_disposal(),直接在Gui消息里处理
;序列号每节6位数限制
;序列号输入自动跳转
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
Global $stp = 1, $Input1, $Input2, $Input3, $Input4, $Input5, $nn ;声明一下
Global $Input
$Form1 = GUICreate("模拟安装", 503, 361, -1, -1)
; 图片控件
$Pic1 = GUICtrlCreatePic("G:\模拟安装软件\01.bmp", 0, 0, 165, 315) ;图标控件
GUICtrlSetState($Pic1, $gui_hide) ;图标控件隐藏
$Pic2 = GUICtrlCreatePic("G:\模拟安装软件\02.bmp", 30, 65, 105, 220)
GUICtrlSetState($Pic1, $gui_hide) ;图标控件隐藏
; 注册部分专用控件
$Label3_1 = GUICtrlCreateLabel("请输入您的产品序列号", 170, 65, 250, 20) ;标签
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input1 = GUICtrlCreateInput("", 160, 90, 75, 21)
GUICtrlSetLimit(-1, 6)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input2 = GUICtrlCreateInput("", 240, 90, 75, 21)
GUICtrlSetLimit(-1, 6)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input3 = GUICtrlCreateInput("", 320, 90, 75, 21)
GUICtrlSetLimit(-1, 6)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input4 = GUICtrlCreateInput("", 400, 90, 75, 21)
GUICtrlSetLimit(-1, 6)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Input5 = GUICtrlCreateInput("123456789", 240, 120, 75, 21)
GUICtrlSetLimit(-1, 9)
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Label3_1 = GUICtrlCreateLabel("请输入您的产品序列号", 170, 65, 250, 20) ;标签
GUICtrlSetState(-1, $gui_hide) ; 隐藏
$Graphic01 = GUICtrlCreateGraphic(0, 0, 504, 315) ;图形控件
GUICtrlSetBkColor(-1, 0xffffff) ;图形控件背景色
GUICtrlSetState(-1, $gui_hide) ;图标控件隐藏
$Graphic02 = GUICtrlCreateGraphic(0, 0, 504, 54) ;图形控件
GUICtrlSetBkColor(-1, 0xffffff) ;图形控件背景色
GUICtrlSetState(-1, $gui_hide)
$Label1 = GUICtrlCreateLabel("1", 180, 16, 310, 30) ;标签
GUICtrlSetFont(-1, 14, 600, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2 = GUICtrlCreateLabel("2", 180, 45, 310, 20) ;标签-01
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label3 = GUICtrlCreateLabel("3", 180, 70, 310, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label4 = GUICtrlCreateLabel("4", 180, 95, 310, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label5 = GUICtrlCreateLabel("5", 180, 120, 310, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label6 = GUICtrlCreateLabel("6", 180, 145, 310, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2_1 = GUICtrlCreateLabel("请仔细阅读下列许可协议。" _
                 & "您在继续安装前必须同意这些条款。", 20, 65, 460, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2_2 = GUICtrlCreateLabel("", 30, 10, 200, 20) ;标签
GUICtrlSetFont(-1, 10, 600, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Label2_3 = GUICtrlCreateLabel("", 40, 30, 200, 20) ;标签
GUICtrlSetFont(-1, 10, 400, 0, "宋体_GB2312") ;标签字体
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ;标签透明
$Edit1 = GUICtrlCreateEdit("", 20, 90, 463, 170, BitOR($ES_AUTOVSCROLL, $ES_READONLY, $WS_VSCROLL), _
                BitOR($WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE))
GUICtrlSetBkColor(-1, 0xffffff) ;编辑控件背景色
GUICtrlSetData(-1, "软件许可协议" & @CRLF & @CRLF _
                 & "  重要须知:迅雷在此特别提醒用户认真阅读本《软件许可协议》--- 用户应认真" & @CRLF _
                 & "阅读本《软件许可协议》 (下称《协议》)中各条款, 包括免除或者限制迅雷责任" & @CRLF _
                 & "的免责条款及对用户的权利限制。请您审阅并接受或不接受本《协议》(未成年人" & @CRLF _
                 & "应在法定监护人陪同下审阅)。除非您接受本《协议》条款,否则您无权下载、安" & @CRLF _
                 & "装或使用本软件及其相关服务。您的安装使用行为将视为对本《协议》的接受,并" & @CRLF _
                 & "同意接受本《协议》各项条款的约束。" _
                 & @CRLF & @CRLF & '  本《协议》是用户与迅雷公司(下称"迅雷")之间关于用户下载、安装、使用、复' & @CRLF _
                 & '制"迅雷客户端"软件, (以下简称"软件")所订立的协议。本《协议》描述迅雷与用' & @CRLF _
                 & '户之间关于"软件"许可使用及相关方面的权利义务。"用户"或"您"是指通过迅雷提' & @CRLF _
                 & '供的获取软件授权的途径获得软件授权许可和/或软件产品的个人或单一实体。' _
                 & @CRLF & @CRLF & '1     权利声明' _
                 & @CRLF & @CRLF & '本"软件"由迅雷公司开发。本"软件"的一切版权等知识产权,以及与"软')
ControlFocus("模拟安装", "", $Edit1)
$Radio1 = GUICtrlCreateRadio("我同意此协议(&A)", 20, 270, 113, 17)
GUICtrlSetState($Radio1, $gui_hide) ;调整指定控件的状态
GUICtrlSetState($Radio1, $gui_hide)
$Radio2 = GUICtrlCreateRadio("我不同意此协议(&D)", 20, 290, 120, 17)
GUICtrlSetState($Radio2, $gui_hide) ;调整指定控件的状态 ; 隐藏
GUICtrlSetState($Radio2, $GUI_CHECKED)
$Button0 = GUICtrlCreateButton("取消", 410, 330, 80, 21, 0)
$Button1 = GUICtrlCreateButton("< 上一步(&B)", 225, 330, 80, 21, 0)
$Button2 = GUICtrlCreateButton("下一步(&N) >", 316, 330, 80, 21, 0)
GUICtrlCreateLabel("", 0, 315, 505, 1, $SS_SUNKEN + $SS_ETCHEDHORZ);装饰标签
$Label0 = GUICtrlCreateLabel("", 0, 54, 505, 1, $SS_SUNKEN + $SS_ETCHEDHORZ);装饰标签
GUISetState(@SW_SHOW)
step1(1)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1 ; "< 上一步[&B]"
                        Call("step" & $stp, 0);调用用户自定义函数
                        $stp -= 1
                        Call("step" & $stp, 1)
                Case $Button2 ; "下一步[&N] >"
                        If GUICtrlRead($Button2) = "完成[&F]" Then
                                Exit
                        EndIf
                        Call("step" & $stp, 0)
                        $stp += 1
                        Call("step" & $stp, 1)
                Case $Button0
                        _Exit()
                Case $Radio1
                        GUICtrlSetState($Button2, $gui_enable)
                Case $Radio2
                        GUICtrlSetState($Button2, $GUI_DISABLE)
        EndSwitch
WEnd
Func step1($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "模拟安装 - 欢迎使用");修改指定窗口的标题
                GUICtrlSetState($Pic1, $gui_show) ;显示图像 1
                GUICtrlSetState($Pic2, $gui_hide) ;隐藏图像 2
                GUICtrlSetState($Graphic01, $gui_show) ;显示图形
                ; 隐藏控件
                GUICtrlSetState($Button1, $gui_hide) ;隐藏按钮 1
                GUICtrlSetState($Edit1, $gui_hide) ;隐藏编辑框
                GUICtrlSetState($Label0, $gui_hide) ;隐藏装饰标签
                GUICtrlSetState($Label2_1, $gui_hide) ; 隐藏标签 2-1
                GUICtrlSetState($Label2_2, $gui_hide) ; 隐藏标签 2-2
                GUICtrlSetState($Label2_3, $gui_hide) ; 隐藏标签 2-3
                GUICtrlSetState($Label3_1, $gui_hide) ; 隐藏标签 3-1
                ;GUICtrlSetState(, $gui_hide)
                GUICtrlSetState($Radio1, $gui_hide)
                GUICtrlSetState($Radio2, $gui_hide)
                ; 显示并修改文本标签 1 - 6
                GUICtrlSetState($Label1, $gui_show)
                GUICtrlSetData($Label1, "欢迎使用 模拟安装 演示向导")
                GUICtrlSetState($Label2, $gui_show)
                GUICtrlSetData($Label2, "现在将开始工具软件的模拟安装")
                GUICtrlSetState($Label3, $gui_show)
                GUICtrlSetData($Label3, "这是专为初学安装脚本编写者设计的")
                GUICtrlSetState($Label4, $gui_show)
                GUICtrlSetData($Label4, "免除你为学习写脚本而反复安装、卸载的烦恼!")
                GUICtrlSetState($Label5, $gui_show)
                GUICtrlSetData($Label5, "整个可见过程与真实软件安装完全一样!")
                GUICtrlSetState($Label6, $gui_show)
                GUICtrlSetData($Label6, "但系统后台绝无任何实际操作!不需事后的卸载!")
        Else
                GUICtrlSetState($Button1, $gui_enable) ;调整指定控件的状态
                GUICtrlSetState($Radio1, $gui_hide)
                GUICtrlSetState($Radio2, $gui_hide)
        EndIf
EndFunc   ;==>step1
Func Step2($x)
        If $x = 1 Then
                GUICtrlSetState($Button2, $GUI_DISABLE)
                WinSetTitle("模拟安装", "", "模拟安装 - 许可协议");修改指定窗口的标题
                GUICtrlSetData($Label2_2, "许可协议")
                GUICtrlSetData($Label2_3, "继续安装前请阅读下列重要信息。")
                GUICtrlSetState($Graphic01, $gui_hide) ;隐藏图形01
                GUICtrlSetState($Graphic02, $gui_show) ;显示图形02
                GUICtrlSetState($Pic1, $gui_hide) ; 隐藏图像
                GUICtrlSetState($Label2_2, $gui_show) ; 显示标签 2-2
                GUICtrlSetState($Label2_3, $gui_show) ; 显示标签 2-3
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetState($Label0, $gui_show) ;显示装饰标签
                GUICtrlSetState($Radio1, $gui_show) ;显示协议选择单选框
                GUICtrlSetState($Radio2, $gui_show) ;显示协议选择单选框
                ; 隐藏文本标签 1 - 6
                GUICtrlSetState($Label1, $gui_hide) ;隐藏标签 -1
                GUICtrlSetState($Label2, $gui_hide) ;隐藏标签 -2
                GUICtrlSetState($Label3, $gui_hide) ;隐藏标签 -3
                GUICtrlSetState($Label4, $gui_hide) ;隐藏标签 -4
                GUICtrlSetState($Label5, $gui_hide) ;隐藏标签 -5
                GUICtrlSetState($Label6, $gui_hide) ;隐藏标签 -6
                GUICtrlSetState($Label2_1, $gui_show);显示标签 2-1
                GUICtrlSetState($Edit1, $gui_show) ;显示编辑框
        Else
        EndIf
EndFunc   ;==>Step2
Func step3($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "模拟安装 - 用户注册");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetState($Label2_1, $gui_hide) ;隐藏标签 2-1
                GUICtrlSetState($Radio1, $gui_hide) ;调整指定控件的状态 ; 隐藏
                GUICtrlSetState($Radio2, $gui_hide) ;调整指定控件的状态 ; 隐藏
                GUICtrlSetState($Edit1, $gui_hide) ;调整指定控件的状态 ; 隐藏
                ; 显示注册控件
                GUICtrlSetState($Input1, $gui_show)
                GUICtrlSetState($Input2, $gui_show)
                GUICtrlSetState($Input3, $gui_show)
                GUICtrlSetState($Input4, $gui_show)
                GUICtrlSetState($Pic2, $gui_show)
                GUICtrlSetState($Label3_1, $gui_show)
                ; 修改文本标签
                GUICtrlSetData($Label2_2, "验证产品序列号和用户ID")
                GUICtrlSetData($Label2_3, "请输入您的产品序列号和用户ID")
        Else ;否则, 下一画面的[ 上一步 ] 按钮点击处理
                ; 隐藏控件
                GUICtrlSetState($Edit1, $gui_hide) ;调整指定控件的状态 ; 显示
                GUICtrlSetState($Radio1, $gui_hide) ;调整指定控件的状态 ; 隐藏
                GUICtrlSetState($Radio2, $gui_hide) ;调整指定控件的状态 ; 隐藏
                GUICtrlSetState($Input1, $gui_hide)
                GUICtrlSetState($Input2, $gui_hide)
                GUICtrlSetState($Input3, $gui_hide)
                GUICtrlSetState($Input4, $gui_hide)
                GUICtrlSetState($Pic2, $gui_hide)
                GUICtrlSetState($Label3_1, $gui_hide)
        EndIf
        GUICtrlSetState($Input1, $GUI_FOCUS)
        AdlibRegister("_register", 10);注册 Adlib 函数
EndFunc   ;==>step3
Func step4($x)
        If $x = 1 Then
                GUICtrlSetState($Input5, $gui_hide)
                GUICtrlSetState($Button2, $GUI_DISABLE)
                WinSetTitle("模拟安装", "", "模拟安装 - 选择附件");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加04") ; 修改指定控件的数据
        Else
        EndIf
EndFunc   ;==>step4
Func step5($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "模拟安装 - 推荐工具");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加05") ; 修改指定控件的数据
        Else
        EndIf
EndFunc   ;==>step5
Func step6($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "模拟安装 - 安装位置");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加06") ; 修改指定控件的数据
        Else
        EndIf
EndFunc   ;==>step6
Func step7($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "准备安装");修改指定窗口的标题
                GUICtrlSetData($Button2, "安装(&I)")
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加07") ; 修改指定控件的数据
        Else
        EndIf
EndFunc   ;==>step7
Func step8($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "新标题===08");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加08") ; 修改指定控件的数据
        Else
        EndIf
EndFunc   ;==>step8
Func step9($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "新标题XXX09");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加09") ; 修改指定控件的数据
        Else
        EndIf
EndFunc   ;==>step9
Func step10($x)
        If $x = 1 Then
                WinSetTitle("模拟安装", "", "新标题XXX09");修改指定窗口的标题
                GUICtrlSetState($Button1, $gui_show) ; 显示[ 上一步 ]按钮
                GUICtrlSetData($Label2, "添加09") ; 修改指定控件的数据
        Else
        EndIf
EndFunc   ;==>step10

Func _register();监视 注册码输入:
        $focus = ControlGetFocus($Form1)
        $x = ControlCommand($Form1, '', $focus, 'GetCurrentCol', '')
        If $x = 7 And $nn = $x Then Send('{tab}')
        $nn = $x + 1
        If StringLen(GUICtrlRead($Input4)) = 6 Then
                Local $len01 = GUICtrlRead($Input1); 如果注册码输入完成,则读输入的注册码:
                Local $len02 = GUICtrlRead($Input2)
                Local $len03 = GUICtrlRead($Input3)
                Local $len04 = GUICtrlRead($Input4)
                If GUICtrlRead($Input1) = "aaa222" And GUICtrlRead($Input2) = "bbb333" _
                                And GUICtrlRead($Input3) = "ccc444" And GUICtrlRead($Input4) = "ddd555" Then; 判断注册码是否正确:
                        AdlibUnRegister("_register")
                        GUICtrlSetState($Input1, $GUI_DISABLE)
                        GUICtrlSetState($Input2, $GUI_DISABLE)
                        GUICtrlSetState($Input3, $GUI_DISABLE)
                        GUICtrlSetState($Input4, $GUI_DISABLE)
                        GUICtrlSetData($Label3_1, "您输入的产品序列号正确,请输入用户ID:")
                        GUICtrlSetState($Input5, $gui_show); 显示用户ID输入框
                Else
                        GUICtrlSetData($Label3_1, "您输入的产品序列号不正确,请重新输入。")
                        GUICtrlSetData($Input1, '')
                        GUICtrlSetData($Input2, '')
                        GUICtrlSetData($Input3, '')
                        GUICtrlSetData($Input4, '')
                        GUICtrlSetState($Input1, $GUI_FOCUS)
                EndIf
        Else
        EndIf
EndFunc   ;==>_register


Func _Exit()
        Dim $iMsgBoxAnswer
        $iMsgBoxAnswer = MsgBox(262180, "退出安装程序", "安装程序未完成安装。如果您现在退出,您的程序将不能安装。" _
                         & @CRLF & "" & @CRLF & "您可以以后再运行安装程序完成安装。" _
                         & @CRLF & "" & @CRLF & "退出安装程序吗?")
        Select
                Case $iMsgBoxAnswer = 6 ;Yes
                        Exit
                Case $iMsgBoxAnswer = 7 ;No
        EndSelect
EndFunc   ;==>_Exit
 楼主| 发表于 2010-7-16 01:50:13 | 显示全部楼层
回复 14# afan

收下了。。。。谢谢!!!!!!!!!!

晚安!!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 16:53 , Processed in 0.095191 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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