Javascript 如何从JScript执行VBScript代码?

Javascript 如何从JScript执行VBScript代码?,javascript,vbscript,jscript,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

我正在尝试从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无法创建对象(800A01AD)


我做错了什么

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

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

子T
MsgBox“你好,世界!”,1+48,“问候”
端接头
T

如果脚本文件的扩展名为.wsf,也可以从JScript执行VBScript代码。通过这种方式,VBScript代码变得更易于阅读

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

子T
MsgBox“你好,世界!”,1+48,“问候”
端接头
T

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

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

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

C:\Windows\SysWOW64\cscript.exe "E:\Path\Name.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)

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

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

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

C:\Windows\SysWOW64\cscript.exe "E:\Path\Name.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)

浏览器开发工具中的控制台显示了什么?您试图在哪个浏览器(及其版本)中运行此功能?没有浏览器,我正在Windows上本地运行此程序如果您在64位操作系统上使用32位组件,请确保您使用的是32位引擎:
c:\Windows\SysWOW64\cscript your.js
我将在一分钟内对其进行测试,谢谢您的浏览器开发工具中的控制台显示了什么?什么浏览器(及其版本)你想在中运行吗?没有浏览器,我正在Windows上本地运行。如果你在64位操作系统上使用32位组件,请确保你使用的是32位引擎:
c:\Windows\SysWOW64\cscript your.js
我将在一分钟内对其进行测试,默认情况下,感谢此流,将来自wscript,许多cscript功能将丢失。默认情况下,此流将来自wscript,许多cscript功能将丢失。