在WIN7中激活VS2008的升级框(有图有源码)

来源:互联网 发布:淘宝直播哪个机构好 编辑:程序博客网 时间:2024/04/27 23:28

前言

最近刚开始接触学习AutoIT,该软件纯天然绿色、免费、轻量级、易上手,弱类型的BASIC语言风格,连CTRL+SHIFT+SPACE的用法都一样,不用安装身材硕大的开发环境,自带编译器,适合除98之外的WIN平台,解压后即可使用,我都是放在U盘里,随便插一台机器就能用了(这段算广告吧)。尽管说的那么容易,但还是要学习,尤其是各种函数以及辅助工具的配合使用。

言归正传

此次的学习实例是,解决在WIN7中安装VS2008后,无法在维护模式输入序列号的问题。分析一下,在WIN7以前的系统中可以显示,安装程序并没有更新,可以肯定只是在WIN7中对输入控件和升级按钮做了隐藏处理,我们要做的就是让这些控件显示出来即可,废话不多说,直接分享完整源代码。

完整源码

view sourceprint?
001#cs
002Author:J.Wang
003Company:www.chinavalue.net
004CreateTime:2010.08.07
005Function:Show VS2008 Serial Number ControlsFor WIN7
006#ce
007 
008#include <GUIConstantsEx.au3>
009#include <ButtonConstants.au3>
010 
011;不显示任务栏图标
012#NoTrayIcon
013 
014If @OSVersion <>"WIN_7" Then
015    ShowMessage("该程序只能运行在Windows7系统中")
016    Exit
017EndIf
018 
019;窗口标题,可根据本机安装的VS版本自行设置
020Dim $windowTitle ="Microsoft Visual Studio 2008 安装程序 - 维护页"
021 
022;序列号,可根据本机安装的VS版本自行设置
023Dim $snArray[7]
024$snArray[0] = "VS2008"
025$snArray[1] = "SerialNumber"
026$snArray[2] = "PYHYP"
027$snArray[3] = "WXB3B"
028$snArray[4] = "B2CCM"
029$snArray[5] = "V9DX9"
030$snArray[6] = "VDY8T"
031 
032;创建窗体
033GUICreate("WIN7安装VS2008的激活升级程序", 336, 195)
034GUISetIcon("VS2008.ico")
035GUISetBkColor(0xE4F4FF)
036 
037;打包文件
038FileInstall("banner.jpg", @TempDir &"\banner.jpg")
039FileInstall("blog.bmp", @TempDir &"\blog.bmp")
040FileInstall("button.bmp", @TempDir &"\button.bmp")
041 
042;创建内容
043GuiCtrlCreatePic(@TempDir & "\banner.jpg", 1, 1, 334, 157)
044 
045;创建博客地址按钮
046$btnBlog = GUICtrlCreateButton("博客地址", 5, 165, 114, 23, $BS_BITMAP)
047GUICtrlSetImage($btnBlog, @TempDir & "\blog.bmp")
048GUICtrlSetCursor($btnBlog, 0)
049 
050;创建激活按钮
051$btnActive = GUICtrlCreateButton("激活输入框", 201, 165, 126, 23, $BS_BITMAP)
052GUICtrlSetImage($btnActive, @TempDir &"\button.bmp")
053GUICtrlSetCursor($btnActive, 0)
054 
055GUISetState(@SW_SHOW)
056 
057While 1
058  $msg = GUIGetMsg()
059 
060  Select
061    Case$msg = $btnActive
062        ;激活窗口
063        WinActivate($windowTitle)
064 
065        ;获取窗口是否激活
066        Dim$isActive = WinActive($windowTitle)
067 
068        ;等于零时表示未找到窗口或者未激活
069        If$isActive = 0 Then
070            ShowMessage("请先进入VS2008维护模式再运行本程序")
071        EndIf
072       
073        ;不等于零时表示窗口已激活
074        If$isActive <> 0 Then
075           
076            ;显示序列号文本框
077            Dim$controlID = 2
078           
079            While$controlID < 7
080                ControlShow($windowTitle,"", "[CLASS:Edit; INSTANCE:"& $controlID & "]")
081                ControlEnable($windowTitle,"", "[CLASS:Edit; INSTANCE:"& $controlID & "]")
082                ControlSetText($windowTitle,"", "[CLASS:Edit; INSTANCE:"& $controlID & "]", $snArray[$controlID])
083 
084                $controlID = $controlID + 1
085            WEnd
086           
087            ;显示升级按钮
088            ControlShow($windowTitle,"", "[CLASS:Button; INSTANCE:43]")
089            ControlEnable($windowTitle,"", "[CLASS:Button; INSTANCE:43]")
090           
091        EndIf
092       
093    Case$msg = $btnBlog
094        ShellExecute("http://0417.cnblogs.com")
095 
096    Case$msg = $GUI_EVENT_CLOSE
097        ExitLoop
098  EndSelect
099WEnd
100 
101;显示提示对话框
102Func ShowMessage($msg)
103    MsgBox(64,"系统提示", $msg)
104EndFunc


注释已经很清楚了,我就不多说什么了。

截图预览

程序下载(已激活的也可以试用)

原创粉丝点击