ソースコード
Set shell = WScript.CreateObject("WScript.Shell") Do If shell.AppActivate("foobar - メモ帳") Then Exit Do WScript.Sleep 100 Loop
解説
AppActivateはウィンドウタイトルが部分一致したウィンドウをアクティブにする。成功するとTruwを返すので、これを利用して特定のウィンドウが開いたときを検出できる。
たとえば、インストール中は「xxxxのインストール」というタイトルだが、終了時には「再起動してください」というダイアログがでるとする。その場合には「再起動してください」を検出することで、インストールの終了タイミングを得られる。WScript.sleepよりも確実で安全である。
部分一致しか対応していないため、"メモ帳"は"foobar - メモ帳"にもヒットするし、"abc - メモ帳"にもヒットしてしまう。このときにはどちらがアクティブになるかは不定で(MSDNソース)、おそらく思い通りの結果にはならない。
発展
cmd上でTITLEを変更することで、cmdと同期をとりながらWSHを実行できるかもしれない。