アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
を入力すると読み込み途中で止まってしまうみたいです。
なにかいい方法がありますか?

A 回答 (2件)

Windowsの場合コントロールの描画などを待つなら メッセージループをとめない工夫が必要です


ひとつのプロシージャ内で待機するのであれば
Application.DoEvents() などをつかって メッセージ処理をWindowsにさせましょう

Do Until .ResyState = WebBrowserReadyState.Complete
 Application.DoEvents()
Loop
といった具合です

または WebBrowserのDocumentCompletedイベント側で処理するといった手法もありますよ
    • good
    • 1
この回答へのお礼

ありがとうごさいます。大変参考になりました。

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
-----------------------------

お礼日時:2006/11/11 13:57

'やってみた。

なお、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
    • good
    • 0
この回答へのお礼

'ここでRefreshしないとReadyStateがWebBrowserReadyState.Uninitialized = 0になったままらしく、ループを抜けられない。

この部分参考になりました。
ありがとうございます。

お礼日時:2006/11/11 13:42

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

このQ&Aを見た人はこんなQ&Aも見ています