使用WScript.shell activeX在javascript中执行命令行

时间:2014-03-13 12:04:14

标签: javascript jquery shell unix

我尝试使用shell脚本执行命令行,方法是使用下面的代码

function callShellApp() {
    var objShell = new ActiveXObject("WScript.shell");
    objShell.run('"c:\menu.exe"');
}

根据我的要求,objShell.run应该处于同步模式,除非发生这种情况,我应该允许用户浏览屏幕。我们有办法保持这一点。

1 个答案:

答案 0 :(得分:0)

使用JS无法实现外部源的完全同步执行,这是一个具有“半同步”调用的片段:

objShell.Run('"c:\\menu.exe"', 1, true);
// JS after the line above is not executed until menu.exe has been terminated

注意也逃脱了反斜杠。虽然JS会等待,但页面本身也是响应式的。为了防止页面和用户之间的交互,你可以做这样的事情:

top.addEventListener('focusin', function () {
    objShell.AppActivate(apptitle); // apptitle === the title of the window wherein `menu.exe` is running
});

不幸的是,这甚至不会阻止执行定时功能。

menu.exe完成之前关闭页面时,这也会造成麻烦。请注意例如this answer,如果发生这种情况,如何关闭你的应用程序。