aardio + VBScript 混合開發

aardio 與 VBScript 可以直接混合編程,VBScript 屬于 Windows 系統自帶組件 —— 可以方便地生成獨立 EXE 程序 。
快速入門首先創建 VBScript 解釋器,aardio 代碼示例:
import web.script;var vm = web.script("VBScript")可以將 aardio 對象(表、數組、函數)直接賦值為 vm 解釋器的成員 , 然后就可以在 VBScript 中調用這些 aardio 對象了,aardio 代碼示例如下:
//添加一個 aardio 函數到 VBScriptvm.external = {    add = function(a,b){        return a + b;    };}用上面的方法模擬 WScript 對象:vm.WScript = {    CreateObject = com.CreateObject;    GetObject = com.GetObject;    Echo = function(...){        console.log(...);    };}import console;下面指定要執行的 VBScript 代碼,也可以用 vm.doScript() 函數運行 VBScript。
vm.script = /*Function TestFunction(a,b)    Dim shell, ns, item    '創建 COM 對象    Set shell = CreateObject("Shell.Application")    Set ns = shell.NameSpace("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}")    '遍歷 COM 對象    For Each item In ns.Items()        '注意 VBScript 調用方法且不接收返回值時,不要加括號 。         WScript.Echo item.Name,item.Path    Next   TestFunction = external.add(a(0),b(0))End Function*/注意在 aardio 中 /* */ 這樣的段注釋可以賦值為字符串。因為 aardio 要求段注釋首尾的星號數目一致,所以很適合用于包含其他編程語言的代碼 。請參考:aardio 編程語言快速入門——語法速覽
aardio 可以通過 vm.script.函數名() 直接調用 VBScript 函數 , aardio 代碼示例:
var ret = vm.script.TestFunction({12,13},{2,3});console.log( ret );以上示例的完整源碼請參考 aardio 自帶范例:運行 VBScript 并獲取表達式的值
aardio 代碼示例:
import web.script;var vm = web.script("VBScript")var version = vm.eval(`ScriptEngine() & " " & ScriptEngineMajorVersion() &_"."  & ScriptEngineMinorVersion() & "."  & ScriptEngineBuildVersion()`);import console;console.log(version);console.pause();VBScript 解析 JSONVBScript 解析 JSON 不是很方便 , 我們用 aardio 為 VBScript 添加 JSON 解析功能 。aardio 的 JSON 解析器兼容JSON,JSONP,JSON5,部分類 YAML 語法 。下面看 aardio 代碼示例:
//導入 VBScript + JSON 支持庫import web.script.json;//創建 VBScript 解析器var vm = web.script("VBScript");//添加 VBScript 函數vm.external = {    log = function(...){        console.log(...);    };}import console;//執行 VBScriptvm.script = /*Function TestFunction()     '解析 JSON    Set jObject = JSON.parse("{name:{a:123:b:456,c:[1,2,3]}}" )    jObject.newKey = "測試"    arr = jObject.name.c    arr(0) = "測試"    '遍歷 JSON 數組    For Each item In arr         external.log item    Next     TestFunction =  arr(0)End Function*/ //調用 VBScript 函數 。var ret = vm.script.TestFunction();console.dump(ret);console.pause();編寫 VBScript 擴展庫這里說明一下擴展 VBScript 功能的 aardio 擴展庫 web.script.json 是如何寫出來的 。
【aardio + VBScript 混合開發】首先需要了解 web.script 不僅僅是可以用于執行 VBScript ,也可以用于執行 JavaScript,參考:aardio + JavaScript 快速開發桌面軟件 , 體積小使用系統自帶ES6 組件
web.script 在創建腳本解釋器時,會檢查 web.script.preload 名字空間下的所有擴展對象,先看一下 web.script 的構造函數的相關 aardio 代碼:

推薦閱讀