Javascript进程已经运行然后等待

时间:2012-11-22 08:12:05

标签: javascript process

我无法使用功能。它应该检查Iexplore.exe是否正在运行,如果它正在运行然后等待。如果没有,则运行脚本。

我不确定如何添加等待功能。

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

2 个答案:

答案 0 :(得分:2)

浏览器中的Javascript没有等待功能,也无法制作。

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

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);

答案 1 :(得分: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中关闭进程的唯一方法。

microsoft在jscript中实现有用的api(如进程状态更改事件等)时很难实现。

如果你想让它干净,你应该考虑使用c,c ++或c#