VisualBasic2005Professionalで勉強中です。WebBrowser1とTextBox1が乗っているフォームで、自動的に制御してテキストボックスに目的の文字列を取得しようとしています。「WebBrowser1.Navigate」や「GetElementsByTagName(

"INPUT").Item(1).InnerText = xxxx」や「InvokeMember("click")」を使用しています。しかるに、Navigateで移動した場合には問題なく取得できますが、InvokeMember("click")などで移動した場合には、WebBrowser1の表示上はきちんと移動しているにも関わらず、取得した文字列は移動前のページの内容となってしまいます。これを、Timer1.Enable = Trueなどで処理の流れを引き継ぐことによって、文字列の取得のみを別のプロシージャでやってやると、きちんと移動後のページの内容が取得できます。なぜでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/05/25 18:11:33
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:taku_satoh No.1

回答回数3ベストアンサー獲得回数0

ポイント60pt

こんにちは

多分使っているメソッドの動きの違いが原因だと思います

WebBrowser.NavigateはWEBページを取得する処理なので

取得するまで次の処理に行かないと思います

InvokeMember()は確か引数の値を呼び出すだけですから

呼んだらそれ以降に派生する処理があろうがなかろうが次の処理に行くと思います(派生する処理として、WEBページの表示とか)

使用しているメソッドの動きの違いが原因で起こってるのではないですか?

id:crashtruck

ご解答ありがとうございます。私もそう思い、Invokememberの後に十分な空白時間を入れてやっているのですが、やはり取得されるのは移動前の文字列なのです。

2006/05/21 21:25:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません