学习游戏辅助制作:VBS的Execute语句
1、小编之前考认证的时候遇到这样的一个题目:a = 1 : execute ("a=2*a"),a的值为?A:3B:1C:2D:4
2、 >>疑问:
很多同学,同样也遇到了这道题,其中有好多童鞋的第一反应和小编是一样的:execute是什么? 直觉告诉我它一定是一个很牛逼的东西,于是迫不及待的去翻了按键命令库,命令库上说execute是对指定的字符串执行正则表达式搜索。 什么跟什么啊?越看越晕,完全不知道这道题该怎么解答。
3、>>解惑:
其实呢,题目中的execute并不是命令库中的execute方法,而是vbs里的 execute语句。
Execute语句
功能:执行一个或多个指定的语句。语法: Execute statements
* 所需要的 statements 参数是一个字符串表达式,其中包含一个或多个要执行的语句。如果要在 statements 参数中包含多条语句,应使用分号或嵌入的分行将其分隔开。
注意: Execute 语句,statements 参数支持部分按键函数,不支持执行按键中的命令库命令、不支持线程BeginThread语句 ——Execute 是vbs语句,而命令库里的函数,是使用按键语言编写的,execute语句无法直接执行它。
题目中 execute ("a=2*a") a = 2*a 可以有两种解释。首先是作为赋值语句,将 2*a 的值赋予 a。其次是作为表达式,测试a 和 2*a 的值是否相等。如果相等,结果为 True;否则,结果为 False。Execute 语句总是使用第一种解释,而 Eval 方法总是使用第二种。
Execute 语句例子:
a=1
Execute("a =2*a")
TracePrint a
输出的结果为:2
Eval 语句例子:
a=1
If Eval("a =2*a") Then
TracePrint "相等"
Else
TracePrint "不相等"
End if
输出的结果为:不相等
4、>>知识拓展:
1、 使用execute语句,无法执行带有引号的语句
例子1:
Execute "KeyPress "3", 1"
运行之后,提示:语法错误:脚本 我的脚本1 ,第1行,第20个字符:(错误码0)没有找到合法的符号。怎么办?

5、代码:
Execute "KeyPress " & "51" &",1"
例子2:
Execute "runapp "notepad.exe""
运行之后,提示:语法错误:脚本 我的脚本1 ,第4行,第19个字符:(错误码0)没有找到合法的符号。 解决方法: 使用chr(34)来代替" 代码:
Execute "runapp " & chr(34) & "notepad.exe"& chr(34)
2、无法调用按键插件命令
例子:
Execute "Call Plugin.File.DeleteFile("G:\test\字库.txt")" //调用File文件插件的删除文件命令
首先,需要将表达式中的”用chr(34)替换掉,如下:
Execute "Call Plugin.File.DeleteFile(" & chr(34) & "G:\test\字库.txt"& chr(34)&") "
可是,运行之后还是提示错误:缺少对象: 'Plugin'
为什么会有这样的提示呢? 是这样的,咱们的execute是vbs语句,而在vbs语句中要调用插件,是需要先建立插件对象的
6、 代码如下:
Set x=CreateObject("QMPlugin.File")
Execute "x.DeleteFile(" & chr(34) & "G:\test\字库.txt"& chr(34)&") "