【问题标题】:How can I execute VBScript code from JScript?如何从 JScript 执行 VBScript 代码?
【发布时间】:2017-07-11 04:46:29
【问题描述】:

我正在尝试从 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)

我做错了什么?

【问题讨论】:

  • 浏览器开发者工具中的控制台是怎么说的?
  • 您尝试在哪个浏览器(以及它的哪个版本)中运行它?
  • 没有浏览器,我在 Windows 本地运行这个
  • 如果您在 64 位操作系统上使用 32 位组件,请确保您使用的是 32 位引擎:c:\Windows\SysWOW64\cscript your.js
  • 我马上测试一下,谢谢

标签: javascript vbscript jscript


【解决方案1】:

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

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

【讨论】:

  • 默认情况下,此流将来自 wscript,许多 cscript 功能将丢失。
【解决方案2】:

我不确切知道这是否是原因,但您的代码在 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多