如何从JScript执行VBScript代码?

时间:2017-02-21 14:00:14

标签: javascript vbscript jscript

我正在尝试从JScript(.js文件)运行VBS代码。这是我的代码:

scr = new ActiveXObject("MSScriptControl.ScriptControl");
s = "Sub T: MsgBox \"Hello World!\" ,1+48, \"Greet\": End Sub";
scr.Language = "VBScript";
scr.AddCode (s);
scr.Run ("T");

在Windows XP 32位上运行正常,但在Windows 10 64位上出错:Automation server could not create object (800A01AD)

我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您的脚本文件具有.wsf扩展名,您还可以从JScript执行VBScript代码。 VBScript代码变得更容易以这种方式阅读。

<job>
<script language="vbscript">
Sub T
   MsgBox "Hello World!", 1+48, "Greet"
End Sub
</script>
<script>
T
</script>
</job>

答案 1 :(得分:0)

我不知道这是否是原因,但您的代码适用于 64 位。

我之前为支持 64 位所做的唯一一件事是安装“Tablacus Script Control 64”作为“MSScript.ocx”的替代。

但是,您可以尝试使用快捷方式在 32 位版本中运行该脚本:

C:\Windows\SysWOW64\cscript.exe "E:\Path\Name.js"

虽然你可以使用我为这个案例写的代码,但与这个Control无关。

var htmlfile=new ActiveXObject('htmlfile').parentWindow;
var alert = function(s){htmlfile.alert(s)};
function mstaVbs (vbCommands,vbOutput){
    return (new ActiveXObject('WScript.Shell')).exec('mshta vbscript:Execute("'+vbCommands+'createobject(""scripting.filesystemobject"").GetStandardStream(1).write('+vbOutput+')&Close")');    
}
var commands='dim s:s=""Get it from vbs"":';
var output='s';
var std=mstaVbs(commands,output)
var output = std.StdOut.ReadAll();// split('\n') - leads to the loss of some data
alert(output)