开发工具:autoit-v3汉化版(免费)
有些工具可以给我们的程序提供快速运行的功能,比如按下一个快捷键,然后输入定义好的简名,就可以打开指定的程序。今天我们也做一个,而且我们的程序还不需要驻留内存,就算是把程序给删除了,依旧可以使用简名来快速启动程序。
我们需要了解一下马甲的原理,要“换了马甲”也认识。首先找到注册表中的位置:
可以看到WIN系统{zd0}马甲是画图程序,即按下WIN+R出现的 “运行”中输入“pbrush”之后,就可以打开mspaint.exe这个画图程序。根据此原理我们就可以打造我们的的马甲。
如果马甲和原程序名一样,那是本色,不算马甲。为了快速运行,我们通常是给程序取简称,比如maxthon我们都喜欢叫它“马桶”,所以它的简称可以是“mt”。下面我们就看看程序如何做马甲。
因为小工具不仅支持EXE,也支持那些快捷方式所对应的,以下代码:
if stringright( $ls_runexe, 4 ) = ".lnk" Then
$lnk_detail = FileGetShortcut( $ls_runexe )
$ls_runexe = $lnk_detail[0]
EndIf
我们可以取得快捷方式所对应的具体程序(某些产品可能不能取得相应的程序名,主要微软产品如WORD、EXCEL之类,可深入研究)。得到实际运行程序后,在注册表中遍历查找对应程序,AU3中对指定键值下进行遍历是使用函数RegEnumKey,方法如下:
$ls_key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"
$i = 1
while @error = 0 and StringLen($ls_short)=0
$var = RegEnumKey( $ls_key, $i)
根据$var的值,我们再取得它所对应的程序:
$ls_regexe = RegRead( $ls_key & "\" & $var, "")
要判断所取得的值和传入的程序同名还是不同名,如果找到了短名,则记录短名后结束。如果有短名,我们也不必给它记录太多短名。这在某种程序上也起到查询作用。
{zh1}我们要求用户输入指定的快捷名,根据快捷名,按“马甲”方式写入:
$ls_shortcut = Inputbox("请输入快捷简名", "程序名:"& $ls_shortexe, $ls_quick )
if stringlen($ls_shortcut)>0 Then
$ls_shortkey = $ls_key & "\" & $ls_shortcut & ".exe"
RegWrite( $ls_shortkey, "", "REG_SZ", $ls_Runexe )
EndIf
这样使用时输入的项目就成了我们运行时的快捷名了。小巧工具,很有意义。
{zh1}我们看看如何给一个程序注册简名:
选定指定程序后点鼠标右键,选“建立快捷名”,在图中第3步输入“gzz”后即可。运行中输入“GZZ”来启动它,因为有时候不常用的程序,桌面上建立一个快捷方式再打开,不仅在桌面上占地方,而且如果桌面放图标太多也不容易找它,反而不如给它取个短名来得实在。
当然一个工具虽然不驻内存,但是它还是要与注册表打交道的,具体可以看源码头部的注册与反注册。
如果想进一步改造它,比如可以完成带参数的启动,用马甲是无法实现的,可以建立一个路径来存放快捷方式的方法,有兴趣可以做更一步研究。
2010年02月01日完稿于浙江杭州
posted on 2010-04-10 23:01 阅读(622)