アクティブにしたいHTAがシングルインスタンス制限を有効にしても良いならば、上記の方法より短いコードで同様の効果を得る方法がありました。
ソース
起動すると以下の画面が表示されます。
画面上のボタンを押して3秒以内に他のウィンドウを重ねると
main関数が実行されたタイミングで、ウィンドウがアクティブになります。
main実行時にウィンドウが最小化されている場合、ウィンドウがアクティブになりません。
その場合、document.hasFocus()の返り値がfalseになるので、WScript.ShellのRunで自身のPathを起動して、その起動完了を待たずに既存のインスタンスは終了します。
※最小化されている場合ウィンドウがアクティブにならないのはWScript.ShellのAppActivateメソッドも同じです。
最小化を解除する方法として試したことと、結果
返信削除・confirm → メイン画面が最小化状態の間は表示されない。最小化解除するとconfirmのウィンドウも表示される。
・alert → 同上
・window.showModalDialog → 同上
・VBScriptのmsgbox → msgboxのウィンドウだけは表示される。メインウィンドウは最小化状態のまま。
・window.open → ブラウザが起動するだけ。メインウィンドウは最小化状態のまま。
(new ActiveXObject('WScript.Shell')).popup('http://www.google.co.jp', 1, 123, 3) → msgboxと同じ結果。
返信削除