起動に(ウインドウが現れるのに)時間がかかるアプリは
そのままだと*focusが対象を見つけられない。
その対応。
簡易的には*wait入れてタイミングを見計らうと言う手もあるが、
HDDやCPUが高負荷時にはなかなか難しいだろうと
Message Moduleを使用したスクリプトで対応。
//!*script
// EAC遅延起動対応スクリプト Ver1.0
// 使用エイリアス EAC
// ============================================================
//^変数宣言
var i = 0; // ループカウンタ
var command = ''; // PPxコマンドワーク
var ClassNo = ''; // 指定ウインドウクラスNo
// 指定ウインドウクラスNo取得
command = '%*findwindowclass("erstes")';
ClassNo = PPx.Extract(command);
// 指定ウインドウチェックループ
if (ClassNo == 0) // 指定ウィンドウなし
PPx.Execute('EAC'); // EAC起動
while (ClassNo == 0) {
PPx.Execute('*wait 100');// 遅延ウェイト 0.1秒
ClassNo = PPx.Extract(command);
i++;
if (i > 100) { // 暴走チェック 0.1秒*100経過で中断問い合わせ
command = '%"' + (PPx.ScriptName).replace(/^.+\\(.+$)/,'$1') + '"'
+ '%:%QN"EAC起動チェックできません。続行しますか?"'
if (PPx.Execute(command) != 0) {
PPx.Quit(-1);
} else {
i = 0;
}
}
}
}
// フォーカスセットして終了
PPx.Execute('*focus #' + ClassNo);
PPx.Quit();