我正在尝试从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)
我做错了什么?
答案 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)