我尝试使用shell脚本执行命令行,方法是使用下面的代码
function callShellApp() {
var objShell = new ActiveXObject("WScript.shell");
objShell.run('"c:\menu.exe"');
}
根据我的要求,objShell.run应该处于同步模式,除非发生这种情况,我应该允许用户浏览屏幕。我们有办法保持这一点。
答案 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,如果发生这种情况,如何关闭你的应用程序。