2012-11-22 52 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); 
相關問題