- 締切済み
他アプリの処理を待つには
VisualBasic2008expressを使っています。 VBで作ったプログラムからインターネットエクスプローラーの検索ボックスのハンドルを取得し、文字列を送信、実行して検索結果を表示した後、また新しい文字列の送信と検索実行を繰り返すプログラムを作ろうとしています。検索を繰り返させるまではできました。 しかし、文字列の送信と検索を実行した後にsleep()を入れているのですが、これだと検索の更新処理の途中で新しい検索をしてしまうので検索結果の表示まで処理されない場合が出てしまいます。 他アプリケーションの更新処理が終わるまで待ち、結果が表示されたらまた新しく文字列の送信と検索実行を繰り返すということができるでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- todo36
- ベストアンサー率58% (728/1234)
IEオートメーションで、IsBusyプロパティやReadyStateプロパティを見る。
- localica
- ベストアンサー率52% (202/385)
VBならMutexクラスかな。 http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx 他にも方法はあるけど。
お礼
ご回答ありがとうございます。mutexで検索して http://www.atmarkit.co.jp/fdotnet/vblab/vb2005m_11/vb2005m_11_04.html を参考にしてみたのですが、パソコンのスペックが低いのかコードが間違っているのか分かりませんが結果が表示される前に新しい検索をしてしまいます。ご存知でしたら宜しくお願いします。 Private mtx As New Threading.Mutex for文 mtx.WaitOne() sendmessage '文字列送信 SendInput '検索実行 mtx.ReleaseMutex() next
お礼
ご回答ありがとうございます。オートメーションは知りませんでした。検索してみましたが、いまいち分かりやすいサイトが見つけられませんでした。分かりやすい説明やサンプルのあるサイトをご存知でしたら教えていただけないでしょうか。