• ベストアンサー

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が取得できてからでないと使用できないようです。 恐れ入りますが、良い方法がありましたら、 ご教示頂きたく、お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

System.Diagnostics.Process.WaitForInputIdle() でいいんじゃないですか?

popopompom
質問者

お礼

ご回答ありがとうございます。 こちらの方法も試してみたのですが ウィンドウタイトルの取得に関しては やはり不完全になってしまうことがあるようでした。 ありがとうございました。

その他の回答 (1)

回答No.2

既存のIEをどのように操作しているかがわかりませんが、 http://okwave.jp/kotaeru.php3?q=1520064 の質問者さんが書かれているように busy を拾ったらよいと思います。

popopompom
質問者

お礼

ご回答ありがとうございます。 この方法ですと、インターネットエクスプローラでないと 対応できないようで、今回は色々なアプリに汎用的に対応できる方法を考えております。 今のところ方法はわからないのですが、何か方法はあるのだと思いますので、 WEBサイトで探してみたいとおもいます。 ありがとうございました。

関連するQ&A