vbs/js互相调用:MSScriptControl

js、vbs各有优点。vbs可以 inputbox msgbox 等,交互能力强,还可以很规范的写class(js那个用function()来prototype太不专业了)。js的异常控制比vbs好(貌似vbs只能On Error Resume Next),还可以很方便地 encode encodeURI encodeURIConponent, 如果能把两者结合起来就爽了,其实这个是可以实现的,前提是:你安装了 Microsoft Script Control 1.0

vbs:

set oJS = CreateObject("MSScriptControl.ScriptControl")
oJS.Language="javascript"
msgbox oJS.Eval("encodeURIComponent('https://est.im')")

js:

var oVBS= new ActiveXObject("MSScriptControl.ScriptControl");
oVBS.Language="VBScript";
WScript.Echo(oVBS.Eval('inputbox("","","")'));

其实这个好东东可以用到编程中,比如说:要写一个函数作图,需要读取一个 表达式 的值,例如 2+3*5^8 如果自己写字符串解析器就及其痛苦了,而且效率不高。可以直接在工程里添加一个 MSScriptControl.ScriptControl 的引用,然后一个 vbs 的 Eval ,就可以轻松获得接个表达式的值。

这个好东东还有很多特性,比如调用js/vbs的一个函数:

ScriptControl.Run("Name", arg1, arg2, ... argn);

Microsoft Script Control 1.0 不是 Windows 自带的组件,需要安装。貌似 Office 安装 VBA 的时候会把这个组件带上,好像 IIS 也是。

Comments