2012-11-22 50 views
0

我无法获得一个函数来工作。它应该检查Iexplore.exe是否正在运行,如果它正在运行,然后等待。如果没有,那么运行脚本。Javascript进程已经运行,然后等待

我不知道如何添加等待功能。

function main() { 
var ieinfostate = false; 
var iewait = setInterval(function() { 
if (ProcessesRunning("iexplore.exe") != 1) { 
    clearInterval(iewait); 
    dosomethingelse(); 
} else if (ieinfostate == false) { 

回答

0

由于您使用的是jscript,因此有一个sleep()方法。认为......这是你可以使用的最糟糕的,因为JavaScript被设计为异步。

,你可以做这样的:

var ieinfostate = false; 

var iewait = setInterval(function() { 
    if (ProcessesRunning("iexplore.exe") != 1) { 
     clearInterval(iewait); 
     dosomethingelse(); 
    } else if (ieinfostate == false) { 
     ieinfostate = true; 
     server.logMessage("Please close Internet Explorer first. This installer will wait till its closed."); 
    } 
}, 500); 

var dosomethingelse = function() { 
    var shell = new ActiveXObject("WScript.Shell"); 
    server.logMessage("Unpacking file"); 
    /* your unpack stuff here */ 
}; 

黯然计时器等待Windows中的进程关闭的唯一途径。

微软很难在jscript中实现有用的API的过程状态改变事件等。

,如果你想拥有它的清洁,你应该考虑使用C,C++或C#

+0

非常感谢帮助。你能再看看代码吗? – user1823753

+0

@ user1823753:你在那里试着做什么?您刚刚将我的部分代码复制到您的问题中。这是你的js文件包含的所有代码吗?除非你向我们展示完整的代码,否则我们无法弄清楚你的问题在哪里。 – GottZ

2

的JavaScript在浏览器中没有一个等待函数,没有办法让一个。

在您的具体情况下,您可以使用setInterval()调用来每隔500ms定期检查一些状态,然后当您找到所需状态时,停止间隔计时器并执行一些操作。

var timer = setInterval(function() { 
    if (ProcessesRunning ("iexplore.exe") == 1) { 
     server.logMessage("Please close Internet explore first"); 
    } else { 
     clearInterval(timer); 
     var shell = new ActiveXObject("WScript.Shell"); 
     server.logMessage("Unpacking file"); 
     // ... 
    } 
}, 500); 
相关问题