プロが教えるわが家の防犯対策術!

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

A 回答 (2件)

System.Diagnostics.Process.WaitForInputIdle()


でいいんじゃないですか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/26 20:11

既存のIEをどのように操作しているかがわかりませんが、




http://okwave.jp/kotaeru.php3?q=1520064
の質問者さんが書かれているように
busy
を拾ったらよいと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/26 20:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!