用vbs检索在运行对话框中键入的一系列命令的代码
作者 佚名
来源 ASP编程
浏览
发布时间 2013-07-09
只是该集合中不包含任何实际命令。要获得这些命令(这是我们的最终目的),我们需要连接到并读取注册表中26个值中的每个值。 我们能这样做吗,我们能很容易地连接到注册表中26个值并读取每一个值吗?当然可以;事实上,这就是以下这段代码所执行的操作: 复制代码 代码如下: ForEachstrValueinarrValueNames IfLen(strValue)=1Then objRegistry.GetStringValueHKEY_CURRENT_USER,strKeyPath,strValue,strRunCommand intLength=Len(strRunCommand) strRunCommand=Left(strRunCommand,intLength-2) Wscript.EchostrRunCommand EndIf Next ForEachstrValueinarrValueNames objRegistry.GetStringValueHKEY_CURRENT_USER,strKeyPath,strValue,strRunCommand Wscript.EchostrRunCommand Next 在此我们所要做的就是建立一个循环,该循环将遍历所有注册表值。要读取其中的每个值,我们只需调用GetStringValue方法: objRegistry.GetStringValueHKEY_CURRENT_USER,strKeyPath,strValue,strRunCommand GetStringValue所传递的四个参数:常量HKEY_CURRENT_USER;变量strKeyPath;变量strValue(代表各个值的名称,例如A、B或C);名为strRunCommand的输出参数。通过使用此输出参数,我们只需指定一个变量名称,GetStringValue方法会将注册表值的值(即,相应的“运行”命令)分配给它。调用GetStringValue后,我们将回显strRunCommand,继续循环,并处理集合中的下一个值。 对于该简化的ForEach循环已讲了不少了;而真正的ForEach循环中的所有额外代码又怎样呢?之所以使用额外代码主要是为了可为我们提供稍好些的输出。例如,在RunMRU项中,有一个名为MRUList的注册表值。这并不代表一个实际的命令;而是代表最近使用的命令的先后出现顺序。这对我们而言并不重要(至少今天不重要),因此我们宁愿跳过该MRUList值。这就是下面的代码所要执行的操作: IfLen(strValue)=1Then 在此行代码中,我们使用Len函数来检查值名称中的字符数。如果字符数(长度)等于1,我们将继续进行并读取该值。如果长度不等于1(显而易见,当MRUList具有7个字符时,就属于这种情况),则我们只需跳过该值并移至集合中的下一项即可。 我们添加的另一小段代码是: intLength=Len(strRunCommand) strRunCommand=Left(strRunCommand,intLength-2) 如果您查看注册表,您会发现所有命令的末尾都添加了一个\1。如果需要的话,可将其保留下来,不过很容易将其去掉。我们所要做的是确定命令的长度,然后使用Left函数返回字符串中的第一个x字符。x等于什么?它等于字符总数减2。这就意味着,我们要获取除最后2个字符(即\1)以外的所有字符,并将它们回显到屏幕上。 至此您已实现了您的目的:一个可返回在运行对话框所键入的最近使用的命令的脚本。我们仍不知道神秘的楼梯到底通向哪里,但我们需要先做重要的事情。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于用vbs检索在运行对话框中键入的一系列命令的代码的所有评论