class="article_content clearfix">
class="htmledit_views">
前言
最近刚开始接触学习AutoIT,该软件纯天然绿色、免费、轻量级、易上手,弱类型的BASIC语言风格,连CTRL+SHIFT+SPACE的用法都一样,不用安装身材硕大的开发环境,自带编译器,适合除98之外的WIN平台,解压后即可使用,我都是放在U盘里,随便插一台机器就能用了(这段算广告吧)。尽管说的那么容易,但还是要学习,尤其是各种函数以及辅助工具的配合使用。
言归正传
此次的学习实例是,解决在WIN7中安装VS2008后,无法在维护模式输入序列号的问题。分析一下,在WIN7以前的系统中可以显示,安装程序并没有更新,可以肯定只是在WIN7中对输入控件和升级按钮做了隐藏处理,我们要做的就是让这些控件显示出来即可,废话不多说,直接分享完整源代码。
完整源码
class="cnblogs_Highlighter">
class="syntaxhighlighter vb">
class="bar ">
class="toolbar">
view source
print
?
class="lines">
class="line alt1">
class="number">001 | class="content">class="vb preprocessor">#cs |
class="line alt2">
class="number">002 | class="content">class="vb plain">Author:J.Wang |
class="line alt1">
class="number">003 | class="content">class="vb plain">Company:www.chinavalue.net |
class="line alt2">
class="number">004 | class="content">class="vb plain">CreateTime:2010.08.07 |
class="line alt1">
class="number">005 | class="content">class="vb keyword">Function class="vb plain">:Show VS2008 Serial Number Controls class="vb keyword">For class="vb plain">WIN7 |
class="line alt2">
class="number">006 | class="content">class="vb preprocessor">#ce |
class="line alt1">
class="number">007 | class="content"> |
class="line alt2">
class="number">008 | class="content">class="vb preprocessor">#include <GUIConstantsEx.au3> |
class="line alt1">
class="number">009 | class="content">class="vb preprocessor">#include <ButtonConstants.au3> |
class="line alt2">
class="number">010 | class="content"> |
class="line alt1">
class="number">011 | class="content">class="vb plain">;不显示任务栏图标 |
class="line alt2">
class="number">012 | class="content">class="vb preprocessor">#NoTrayIcon |
class="line alt1">
class="number">013 | class="content"> |
class="line alt2">
class="number">014 | class="content">class="vb keyword">If class="vb plain">@OSVersion <> class="vb string">"WIN_7" class="vb keyword">Then |
class="line alt1">
class="number">015 | class="content">class="spaces"> class="vb plain">ShowMessage( class="vb string">"该程序只能运行在Windows7系统中" class="vb plain">) |
class="line alt2">
class="number">016 | class="content">class="spaces"> class="vb keyword">Exit |
class="line alt1">
class="number">017 | class="content">class="vb plain">EndIf |
class="line alt2">
class="number">018 | class="content"> |
class="line alt1">
class="number">019 | class="content">class="vb plain">;窗口标题,可根据本机安装的VS版本自行设置 |
class="line alt2">
class="number">020 | class="content">class="vb keyword">Dim class="vb plain">$windowTitle = class="vb string">"Microsoft Visual Studio 2008 安装程序 - 维护页" |
class="line alt1">
class="number">021 | class="content"> |
class="line alt2">
class="number">022 | class="content">class="vb plain">;序列号,可根据本机安装的VS版本自行设置 |
class="line alt1">
class="number">023 | class="content">class="vb keyword">Dim class="vb plain">$snArray[7] |
class="line alt2">
class="number">024 | class="content">class="vb plain">$snArray[0] = class="vb string">"VS2008" |
class="line alt1">
class="number">025 | class="content">class="vb plain">$snArray[1] = class="vb string">"SerialNumber" |
class="line alt2">
class="number">026 | class="content">class="vb plain">$snArray[2] = class="vb string">"PYHYP" |
class="line alt1">
class="number">027 | class="content">class="vb plain">$snArray[3] = class="vb string">"WXB3B" |
class="line alt2">
class="number">028 | class="content">class="vb plain">$snArray[4] = class="vb string">"B2CCM" |
class="line alt1">
class="number">029 | class="content">class="vb plain">$snArray[5] = class="vb string">"V9DX9" |
class="line alt2">
class="number">030 | class="content">class="vb plain">$snArray[6] = class="vb string">"VDY8T" |
class="line alt1">
class="number">031 | class="content"> |
class="line alt2">
class="number">032 | class="content">class="vb plain">;创建窗体 |
class="line alt1">
class="number">033 | class="content">class="vb plain">GUICreate( class="vb string">"WIN7安装VS2008的激活升级程序" class="vb plain">, 336, 195) |
class="line alt2">
class="number">034 | class="content">class="vb plain">GUISetIcon( class="vb string">"VS2008.ico" class="vb plain">) |
class="line alt1">
class="number">035 | class="content">class="vb plain">GUISetBkColor(0xE4F4FF) |
class="line alt2">
class="number">036 | class="content"> |
class="line alt1">
class="number">037 | class="content">class="vb plain">;打包文件 |
class="line alt2">
class="number">038 | class="content">class="vb plain">FileInstall( class="vb string">"banner.jpg" class="vb plain">, @TempDir & class="vb string">"\banner.jpg" class="vb plain">) |
class="line alt1">
class="number">039 | class="content">class="vb plain">FileInstall( class="vb string">"blog.bmp" class="vb plain">, @TempDir & class="vb string">"\blog.bmp" class="vb plain">) |
class="line alt2">
class="number">040 | class="content">class="vb plain">FileInstall( class="vb string">"button.bmp" class="vb plain">, @TempDir & class="vb string">"\button.bmp" class="vb plain">) |
class="line alt1">
class="number">041 | class="content"> |
class="line alt2">
class="number">042 | class="content">class="vb plain">;创建内容 |
class="line alt1">
class="number">043 | class="content">class="vb plain">GuiCtrlCreatePic(@TempDir & class="vb string">"\banner.jpg" class="vb plain">, 1, 1, 334, 157) |
class="line alt2">
class="number">044 | class="content"> |
class="line alt1">
class="number">045 | class="content">class="vb plain">;创建博客地址按钮 |
class="line alt2">
class="number">046 | class="content">class="vb plain">$btnBlog = GUICtrlCreateButton( class="vb string">"博客地址" class="vb plain">, 5, 165, 114, 23, $BS_BITMAP) |
class="line alt1">
class="number">047 | class="content">class="vb plain">GUICtrlSetImage($btnBlog, @TempDir & class="vb string">"\blog.bmp" class="vb plain">) |
class="line alt2">
class="number">048 | class="content">class="vb plain">GUICtrlSetCursor($btnBlog, 0) |
class="line alt1">
class="number">049 | class="content"> |
class="line alt2">
class="number">050 | class="content">class="vb plain">;创建激活按钮 |
class="line alt1">
class="number">051 | class="content">class="vb plain">$btnActive = GUICtrlCreateButton( class="vb string">"激活输入框" class="vb plain">, 201, 165, 126, 23, $BS_BITMAP) |
class="line alt2">
class="number">052 | class="content">class="vb plain">GUICtrlSetImage($btnActive, @TempDir & class="vb string">"\button.bmp" class="vb plain">) |
class="line alt1">
class="number">053 | class="content">class="vb plain">GUICtrlSetCursor($btnActive, 0) |
class="line alt2">
class="number">054 | class="content"> |
class="line alt1">
class="number">055 | class="content">class="vb plain">GUISetState(@SW_SHOW) |
class="line alt2">
class="number">056 | class="content"> |
class="line alt1">
class="number">057 | class="content">class="vb keyword">While class="vb plain"> 1 |
class="line alt2">
class="number">058 | class="content">class="spaces"> class="vb plain">$msg = GUIGetMsg() |
class="line alt1">
class="number">059 | class="content"> |
class="line alt2">
class="number">060 | class="content">class="spaces"> class="vb keyword">Select |
class="line alt1">
class="number">061 | class="content">class="spaces"> class="vb keyword">Case class="vb plain">$msg = $btnActive |
class="line alt2">
class="number">062 | class="content">class="spaces"> class="vb plain">;激活窗口 |
class="line alt1">
class="number">063 | class="content">class="spaces"> class="vb plain">WinActivate($windowTitle) |
class="line alt2">
class="number">064 | class="content"> |
class="line alt1">
class="number">065 | class="content">class="spaces"> class="vb plain">;获取窗口是否激活 |
class="line alt2">
class="number">066 | class="content">class="spaces"> class="vb keyword">Dim class="vb plain">$isActive = WinActive($windowTitle) |
class="line alt1">
class="number">067 | class="content"> |
class="line alt2">
class="number">068 | class="content">class="spaces"> class="vb plain">;等于零时表示未找到窗口或者未激活 |
class="line alt1">
class="number">069 | class="content">class="spaces"> class="vb keyword">If class="vb plain">$isActive = 0 class="vb keyword">Then |
class="line alt2">
class="number">070 | class="content">class="spaces"> class="vb plain">ShowMessage( class="vb string">"请先进入VS2008维护模式再运行本程序" class="vb plain">) |
class="line alt1">
class="number">071 | class="content">class="spaces"> class="vb plain">EndIf |
class="line alt2">
class="number">072 | class="content">class="spaces"> |
class="line alt1">
class="number">073 | class="content">class="spaces"> class="vb plain">;不等于零时表示窗口已激活 |
class="line alt2">
class="number">074 | class="content">class="spaces"> class="vb keyword">If class="vb plain">$isActive <> 0 class="vb keyword">Then |
class="line alt1">
class="number">075 | class="content">class="spaces"> |
class="line alt2">
class="number">076 | class="content">class="spaces"> class="vb plain">;显示序列号文本框 |
class="line alt1">
class="number">077 | class="content">class="spaces"> class="vb keyword">Dim class="vb plain">$controlID = 2 |
class="line alt2">
class="number">078 | class="content">class="spaces"> |
class="line alt1">
class="number">079 | class="content">class="spaces"> class="vb keyword">While class="vb plain">$controlID < 7 |
class="line alt2">
class="number">080 | class="content">class="spaces"> class="vb plain">ControlShow($windowTitle, class="vb string">"" class="vb plain">, class="vb string">"[CLASS:Edit; INSTANCE:" class="vb plain">& $controlID & class="vb string">"]" class="vb plain">) |
class="line alt1">
class="number">081 | class="content">class="spaces"> class="vb plain">ControlEnable($windowTitle, class="vb string">"" class="vb plain">, class="vb string">"[CLASS:Edit; INSTANCE:" class="vb plain">& $controlID & class="vb string">"]" class="vb plain">) |
class="line alt2">
class="number">082 | class="content">class="spaces"> class="vb plain">ControlSetText($windowTitle, class="vb string">"" class="vb plain">, class="vb string">"[CLASS:Edit; INSTANCE:" class="vb plain">& $controlID & class="vb string">"]" class="vb plain">, $snArray[$controlID]) |
class="line alt1">
class="number">083 | class="content"> |
class="line alt2">
class="number">084 | class="content">class="spaces"> class="vb plain">$controlID = $controlID + 1 |
class="line alt1">
class="number">085 | class="content">class="spaces"> class="vb plain">WEnd |
class="line alt2">
class="number">086 | class="content">class="spaces"> |
class="line alt1">
class="number">087 | class="content">class="spaces"> class="vb plain">;显示升级按钮 |
class="line alt2">
class="number">088 | class="content">class="spaces"> class="vb plain">ControlShow($windowTitle, class="vb string">"" class="vb plain">, class="vb string">"[CLASS:Button; INSTANCE:43]" class="vb plain">) |
class="line alt1">
class="number">089 | class="content">class="spaces"> class="vb plain">ControlEnable($windowTitle, class="vb string">"" class="vb plain">, class="vb string">"[CLASS:Button; INSTANCE:43]" class="vb plain">) |
class="line alt2">
class="number">090 | class="content">class="spaces"> |
class="line alt1">
class="number">091 | class="content">class="spaces"> class="vb plain">EndIf |
class="line alt2">
class="number">092 | class="content">class="spaces"> |
class="line alt1">
class="number">093 | class="content">class="spaces"> class="vb keyword">Case class="vb plain">$msg = $btnBlog |
class="line alt2">
class="number">094 | class="content">class="spaces"> class="vb plain">ShellExecute( class="vb string">"http://0417.cnblogs.com" class="vb plain">) |
class="line alt1">
class="number">095 | class="content"> |
class="line alt2">
class="number">096 | class="content">class="spaces"> class="vb keyword">Case class="vb plain">$msg = $GUI_EVENT_CLOSE |
class="line alt1">
class="number">097 | class="content">class="spaces"> class="vb plain">ExitLoop |
class="line alt2">
class="number">098 | class="content">class="spaces"> class="vb plain">EndSelect |
class="line alt1">
class="number">099 | class="content">class="vb plain">WEnd |
class="line alt2">
class="number">100 | class="content"> |
class="line alt1">
class="number">101 | class="content">class="vb plain">;显示提示对话框 |
class="line alt2">
class="number">102 | class="content">class="vb plain">Func ShowMessage($msg) |
class="line alt1">
class="number">103 | class="content">class="spaces"> class="vb plain">MsgBox(64, class="vb string">"系统提示" class="vb plain">, $msg) |
class="line alt2">
class="number">104 | class="content">class="vb plain">EndFunc |
注释已经很清楚了,我就不多说什么了。
截图预览
程序下载(已激活的也可以试用)