學習遊戲輔助製作:VBS的Execute語句
工具/原料
按鍵精靈2014
方法/步驟
小編之前考認證的時候遇到這樣的一個題目:a = 1 : execute ("a=2*a"),a的值為?A:3B:1C:2D:4
>>疑問:
很多同學,同樣也遇到了這道題,其中有好多童鞋的第一反應和小編是一樣的:execute是什麼? 直覺告訴我它一定是一個很牛逼的東西,於是迫不及待的去翻了按鍵命令庫,命令庫上說execute是對指定的字串執行正則表示式搜尋。 什麼跟什麼啊?越看越暈,完全不知道這道題該怎麼解答。
>>解惑:
其實呢,題目中的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
輸出的結果為:不相等
>>知識拓展:
1、 使用execute語句,無法執行帶有引號的語句
例子1:
Execute "KeyPress "3", 1"
執行之後,提示:語法錯誤:指令碼 我的指令碼1 ,第1行,第20個字元:(錯誤碼0)沒有找到合法的符號。怎麼辦?
程式碼:
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語句中要呼叫外掛,是需要先建立外掛物件的
程式碼如下:
Set x=CreateObject("QMPlugin.File")
Execute "x.DeleteFile(" & chr(34) & "G:\test\字型檔.txt"& chr(34)&") "