- ベストアンサー
VB.NETで他のアプリが完全に起動するまで待機する方法を教えて
VB.NET+WinXP環境なのですが、VB.NETで他のアプリを開いて MainWindowTitleでウィンドウタイトルを取得して、 それを元にFindWindowExでハンドル(Hwnd)を取得したいのですが Process.Start(ApplicationA) でアプリが完全に起動し終わる前に次の処理へ移ってしまい、 MainWindowTitleを取得する時に中身が""になってしまったり、 本来なら例えば 「Yahoo! JAPAN - Microsoft Internet Explorer」となるべきところを 「 - Microsoft Internet Explorer」の状態で取得して 次に進んでしまったりします。 起動を実行した後に、Sleep(2000)などを入れると大丈夫なのですが、 必要なSleep時間はマシンや開くアプリによって違うので不都合があります。 APIのWaitForInputIdleもHwndが取得できてからでないと使用できないようです。 恐れ入りますが、良い方法がありましたら、 ご教示頂きたく、お願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
System.Diagnostics.Process.WaitForInputIdle() でいいんじゃないですか?
その他の回答 (1)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
既存のIEをどのように操作しているかがわかりませんが、 http://okwave.jp/kotaeru.php3?q=1520064 の質問者さんが書かれているように busy を拾ったらよいと思います。
お礼
ご回答ありがとうございます。 この方法ですと、インターネットエクスプローラでないと 対応できないようで、今回は色々なアプリに汎用的に対応できる方法を考えております。 今のところ方法はわからないのですが、何か方法はあるのだと思いますので、 WEBサイトで探してみたいとおもいます。 ありがとうございました。
お礼
ご回答ありがとうございます。 こちらの方法も試してみたのですが ウィンドウタイトルの取得に関しては やはり不完全になってしまうことがあるようでした。 ありがとうございました。