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

前言

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

言归正传

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

完整源码

001 #cs
002 Author:J.Wang
003 Company:www.chinavalue.net
004 CreateTime:2010.08.07
005 Function:Show VS2008 Serial Number Controls For WIN7
006 #ce
007  
008 #include <GUIConstantsEx.au3>
009 #include <ButtonConstants.au3>
010  
011 ;不显示任务栏图标
012 #NoTrayIcon
013  
014 If @OSVersion <> "WIN_7" Then
015     ShowMessage("该程序只能运行在Windows7系统中")
016     Exit
017 EndIf
018  
019 ;窗口标题,可根据本机安装的VS版本自行设置
020 Dim $windowTitle = "Microsoft Visual Studio 2008 安装程序 - 维护页"
021  
022 ;序列号,可根据本机安装的VS版本自行设置
023 Dim $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 ;创建窗体
033 GUICreate("WIN7安装VS2008的激活升级程序", 336, 195)
034 GUISetIcon("VS2008.ico")
035 GUISetBkColor(0xE4F4FF)
036  
037 ;打包文件
038 FileInstall("banner.jpg", @TempDir & "\banner.jpg")
039 FileInstall("blog.bmp", @TempDir & "\blog.bmp")
040 FileInstall("button.bmp", @TempDir & "\button.bmp")
041  
042 ;创建内容
043 GuiCtrlCreatePic(@TempDir & "\banner.jpg", 1, 1, 334, 157)
044  
045 ;创建博客地址按钮
046 $btnBlog = GUICtrlCreateButton("博客地址", 5, 165, 114, 23, $BS_BITMAP)
047 GUICtrlSetImage($btnBlog, @TempDir & "\blog.bmp")
048 GUICtrlSetCursor($btnBlog, 0)
049  
050 ;创建激活按钮
051 $btnActive = GUICtrlCreateButton("激活输入框", 201, 165, 126, 23, $BS_BITMAP)
052 GUICtrlSetImage($btnActive, @TempDir & "\button.bmp")
053 GUICtrlSetCursor($btnActive, 0)
054  
055 GUISetState(@SW_SHOW)
056  
057 While 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
099 WEnd
100  
101 ;显示提示对话框
102 Func ShowMessage($msg)
103     MsgBox(64, "系统提示", $msg)
104 EndFunc


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

截图预览

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

posted @ 2011-11-15 21:34  freeboy小亮  阅读(225)  评论(0编辑  收藏  举报