我无法使用功能。它应该检查Iexplore.exe是否正在运行,如果它正在运行然后等待。如果没有,则运行脚本。
我不确定如何添加等待功能。
function main() {
var ieinfostate = false;
var iewait = setInterval(function () {
if (ProcessesRunning("iexplore.exe") != 1) {
clearInterval(iewait);
dosomethingelse();
} else if (ieinfostate == false) {
答案 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#