Vbs
脚本编程简明教程之四
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
如何利用Vbs运行外部程序
Vbs
只提供了编程的一个基本框架,用户可以使用
Vbs
来定义变量、过程和函数,
vbs
也提供了一些内部函数和对象,但是
Vbs
没有提供任何命令来访问
Windows
系统内部的部件
,但是值得庆幸的是,
Vbs
虽然不能自己完成这些任务,但是它提供了一条极为方便、功能也相当强的命令——
CreateObject
,这条命令可以访问
windows
系统内安装的所有
com
对象,并且可以调用这些部件中存放的命令
。
于是问题解决了,比如说,我手头有
1000
个小文本,我首先要对每一个文本的语法进行查错和修改,然后按照预先定义好的规则对这些文本进行排序,最后将这些文本合并成为一个文件。正常情况下,我们需要把打开第一个小文本,然后把它复制到
WORD
中,然后利用里面的除错功能进行除错和修改,然后再导入到
EXCEL
中进行排序,将这个过程重复
1000
遍,然后再将所有得到的文本复制到一个大文本中。实在是太枯燥、工作量太大了。有了
Vbs
和
CreateObject
,问题得到解决,我只需要找到相应的模块,调用相应的功能就可以了,作为脚本,把一个枯燥的过程重复
1000
次,本就是它的拿手好戏。
好了,我们走入正题,从最简单的——只启动一个程序开始。
WSH
也就是用来解析
Vbs
的宿主,本身包含了几个个常用对象
:
1
、
Scripting.FileSystemObject
—
>
提供一整套文件系统操作函数
2
、
Scripting.Dictionary
—
>
用来返回存放键值对的字典对象
3
、
Wscript.Shell
—
>
提供一套读取系统信息的函数,如读写注册表、查找指定文件的路径、读取
DOS
环境变量,读取链接中的设置
4
、
Wscript.NetWork
—
>
提供网络连接和远程打印机管理的函数。(其中,所有
Scripting
对象都存放在
SCRRUN.DLL
文件中,所有的
Wscript
对象都存放在
WSHOM.ocx
文件中
。)
现在我们需要的是第三个对象,好了,让我们先连接一下对象看看,在记事本的编辑窗口中输入:
Option Explicit
Dim objShell
Set objShell = CreateObject(“Wscript.Shell”)
objShell.Run “notepad”
同样,保存执行。那么看到了一个什么样的结果呢?在桌面上又打开了一个记事本。
说明之一:
Set
是
Vbs
指令,凡是将一对象引用赋给变量,就需要使用
set
关键字
。那么什么是对象引用呢?凡是字符串、数值、布尔值之外的变量都是对象引用。
Objshell
是变量名,可以随意修改。
说明之二:凡是正确引用的对象,其本身内置有函数和变量,其引用方法为在变量后加“
.
”,后紧跟其实现功能的函数就可以了。
Objshell.run
的意思就是调用
Wscript.shell
中的运行外部程序的函数——
run
,
notepad
是记事本程序的文件名。当然你也可以改成“
calc
”,这是计算器的文件名,
winword
是
word
的文件名,等等吧,所有可执行文件的文件名都可以。但是需要注意的是,如果你要执行的可执行文件存放的地方不是程序安装的常用路径,一般情况下,需要提供合法的路径名,但是
run
在运行解析时,遇到空格会停止,解决的方法是使用双引号
,例如:在我的机器上运行
qq
,代码为:
objshell.run """C:\Program Files\QQ2006\QQ.exe"""
‘注:三个引号
好,
我们再进一步,启动两个程序会如何呢?
输入如下代码:
Set objShell = CreateObject(“Wscript.Shell”)
objShell.Run “notepad”
objShell.Run “calc”
执行会如何呢?两个程序基本上同时启动了。如果我们需要先启动
notepad
再启动
calc
将如何呢?很简单在需要顺序执行的代码后加
, , True
参数就可以了
。
好了输入代码:
Set objShell = CreateObject(“Wscript.Shell”)
objShell.Run “notepad” ,,true
objShell.Run “calc”
看看执行的结果怎么样吧!
总结:
run
函数有三个参数,第一个参数是你要执行的程序的路径,第二个程序是窗口的形式,
0
是在后台运行;
1
表示正常运行;
2
表示激活程序并且显示为最小化;
3
表示激活程序并且显示为最大化;一共有
10
个这样的参数我只列出了
4
个最常用的。
第三个参数是表示这个脚本是等待还是继续执行,如果设为了
true,
脚本就会等待调用的程序退出后再向后执行
。
其实,
run
做为函数,前面还有一个接受返回值的变量,一般来说如果返回为
0
,表示成功执行,如果不为
0
,则这个返回值就是错误代码
,可以通过这个代码找出相应的错误。
转载于:https://blog.51cto.com/chengchow/886752