progtips

特定ウィンドウの起動を待つ

最終更新:

progtips

- view
メンバー限定 登録/ログイン

ソースコード

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を実行できるかもしれない。
記事メニュー
目安箱バナー