初めて自分の家と他人の家が違う、と意識した時

何度も質問してすみません。
どうしても自力では解決できないことがありましたので質問させていただきます。

webbrowserでの読み込み後の処理についてなのですが、現在表示されているページ内のリンクを自動でクリックし、次のページにあるテキストボックス内にテキストを打ち込みたいのです。

While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
 Application.DoEvents()
End While

を置いているのですが、どうやらこれが機能せずにテキストボックスへの書き込みがうまくいきません。
試しに、上記の記載の後ろに
msgbox("待ってみる")
と記載してみると、前ページのリンクをクリックした瞬間、メッセージボックスが表示されます。

メッセージボックスのOKボタンをしばらく待って手動でOKをクリックするとテキストボックスへのテキストの書き込みも正常に行われます。

ほかには

Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
System.Windows.Forms.Application.DoEvents()
Loop


System.Threading.Thread.Sleep(1000)
も試してみたのですが、sleepに関してはwebbrowserの読込自体が止まってしまいます。

何か良い方法はないのでしょうか?
よろしくお願いいたします。

A 回答 (2件)

WebBrowserのDocumentComplatedで処理を待ち受けたほうが良いかもしれないですよ



WebBrowser1.Document.All.GetElementsByName("ex11")
(1).InvokeMember("click") 'ボタンクリック
でクリック後に飛ぶURLを フォームクラスの変数に代入しておいて

DocumentComplatedイベントで
if e.Url.AbsolutePath = myUrl.AbsolutePath then
WebBrowser1.Document.All.GetElementsByName("ttl")(0).InnerText = "aaaa"
myUrl = Nothing
end if

などとしてみてはいかがでしょう
    • good
    • 0
この回答へのお礼

遅くなりました。
回答ありがとうございます。
おかげさまで希望するコードを書くことが出来ました。
また分からないことが出ると思いますが、お時間が許されましたらお願いいたします。

お礼日時:2008/10/28 04:11

そのリンクからどこか他のページに飛んでから希望のページを表示していませんか?



MsgBoxを出して手動で続行した場合に表示されるURLと
MsgBoxが出たときのURLは同じなのでしょうか
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
遅くなりましたこと、お詫びいたします。

URLはひとつのみです、ちなみに

WebBrowser1.Document.All.GetElementsByName("ex11") 'ボタンクリック
(1).InvokeMember("click")

Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
System.Windows.Forms.Application.DoEvents()
Loop    '待つ

WebBrowser1.Document.All.GetElementsByName("ttl")(0).InnerText = "aaaa"

MsgBox("読込どうかな")

このような記載です。

ボタンをクリックした後、読込が終わる前に"aaaa"と"どうかな"の部分が走ってしまうので、"aaaa"は記載されずに終わります。

この2行を逆にし、先にmsgboxを読み込むと問題なくaaaaが入力されるのですが、完全自動にしたいので、それは避けたいのです。

http://oshiete.nikkeibp.co.jp/qa2599810.html
このような回答も見つけたのですが、確かに私の記載したプログラムの前にはいくつかのwebサイトの移動がありますが、読込待ちがうまくいかないのは、この部分だけなんです。
非completeの指定の仕方も良くわかりません。

お礼日時:2008/10/27 15:53

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