如何从JScript执行VBScript代码



我正在尝试从jscript(.js file)运行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)

我在做什么错?

如果您的脚本文件具有.wsf扩展名,也可以从JScript执行VBScript代码。vbscript代码变得更容易读取。

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

我不确切知道这是否是原因,但是您的代码在64位上对我有用。

我以前为64位所做的唯一一件事是安装" tablacus脚本控制64"作为'msscript.ocx'的替代方案。

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

C:WindowsSysWOW64cscript.exe "E:PathName.js"

尽管您可以使用我为此情况写的我的代码,该代码与此控件无关。

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)

最新更新