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 代码:

推荐阅读