系统有马甲不驻内存也快捷- 妖精总比想象多- 博客园

开发工具: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

我们可以取得快捷方式所对应的具体程序(某些产品可能不能取得相应的程序名,主要微软产品如WORDEXCEL之类,可深入研究)。得到实际运行程序后,在注册表中遍历查找对应程序,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”来启动它,因为有时候不常用的程序,桌面上建立一个快捷方式再打开,不仅在桌面上占地方,而且如果桌面放图标太多也不容易找它,反而不如给它取个短名来得实在。

当然一个工具虽然不驻内存,但是它还是要与注册表打交道的,具体可以看源码头部的注册与反注册。

如果想进一步改造它,比如可以完成带参数的启动,用马甲是无法实现的,可以建立一个路径来存放快捷方式的方法,有兴趣可以做更一步研究。

 

 20100201日完稿于浙江杭州

posted on 2010-04-10 23:01 阅读(622)  

郑重声明:资讯 【系统有马甲不驻内存也快捷- 妖精总比想象多- 博客园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——