- ベストアンサー
WebBrowserの読み込み待ちの処理の仕方
VB2005にてプログラムしております。 WebBrowser内にて表示したページでID、PASSを自動入力、ログインするというプログラムですが、 ------------------------------------------------------------- Dim IDCODE As String = TextBox1.Text Dim PASSCODE As String = TextBox2.Text '文字列で指定したURLに飛ぶ WebBrowser1.Navigate("https://XXXXXXXXX.ne.jp/") '表示終了まで待つ ?????? ‘WebBrowser1へID、PASS入力処理 ------------------------------------------------------------- 上記の ?????? 部分に表示待ちの処理をするコードを入れると思うのですが、 With WebBrowser1 Do While .IsBusy = True Loop Do While .ReadyState <> "complete" Loop End With を入力すると読み込み途中で止まってしまうみたいです。 なにかいい方法がありますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Windowsの場合コントロールの描画などを待つなら メッセージループをとめない工夫が必要です ひとつのプロシージャ内で待機するのであれば Application.DoEvents() などをつかって メッセージ処理をWindowsにさせましょう Do Until .ResyState = WebBrowserReadyState.Complete Application.DoEvents() Loop といった具合です または WebBrowserのDocumentCompletedイベント側で処理するといった手法もありますよ
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
'やってみた。なお、Form1にWebbrowser1を貼り付けただけの状態でテスト Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Show() Dim IDCODE As String = "himajin100000" Dim PASSCODE As String = "pass" '文字列で指定したURLに飛ぶ Me.WebBrowser1.Navigate("http://www.yahoo.co.jp") 'ここでRefreshしないとReadyStateがWebBrowserReadyState.Uninitialized = 0になったままらしく、ループを抜けられない。 Me.WebBrowser1.Refresh() With Me.WebBrowser1 Do While .IsBusy = True Me.Text = "busy" Loop Do While .ReadyState = WebBrowserReadyState.Complete Me.Text = CStr(.ReadyState) Loop Me.Text = "Finished" End With End Sub
お礼
'ここでRefreshしないとReadyStateがWebBrowserReadyState.Uninitialized = 0になったままらしく、ループを抜けられない。 この部分参考になりました。 ありがとうございます。
お礼
ありがとうごさいます。大変参考になりました。 DocumentCompletedイベント側で描画終了の変数を発行する方が描画終了のタイミングをつかみやすいので以下のようにして見ました。 ----------------------------- Private Sub WebBrowser1_DocumentCompleted Label10.Text = ("Login") Private Sub Button2_Click '文字列で指定したURLに飛ぶ WebBrowser1.Navigate("https://XXXXXXXXX.ne.jp/") ‘Loginの表示が出るまで待つ Do Until Label10.Text = ("Login") Application.DoEvents() Loop -----------------------------