トップ回答者
webbrowserの時間待ち?

質問
-
こんにちは
VB2008です。
配列に入れたURLを連続で巡回させています。
ある語句があればマウスがおされるまで処理を中断させたいのですがどうすればいいですか?
hai2はURLとりあえずhai2(0)でテストしています
ff にはwebbrowserの文字列を格納。
kee1は検索文字列。
WebBrowser1.Navigate(hai2(0))
While WebBrowser1.IsBusy
Application.DoEvents()
End While
While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
Me.WebBrowser1.ScriptErrorsSuppressed = True
End While
ff = Me.WebBrowser1.Document.Body.OuterText
d = InStr(ff, kee1)
If d > 0 Then
ここにマウスクリックされるまで待機させたい(マウスがクリックされたらフレームのテキストを取得したいのです。)
Else
TextBox1.Text = Me.WebBrowser1.Document.Window.Frames.Item(0).Document.Body.OuterHtml
End If検索文字が無い場合はそのままフレームの文字列取得します。
回答
-
コード的には以下のようにしてできるようですが、そこに書かれているようにイベントドリブンの流れを切りますので、お勧めではありません。
クローズイングイベント
http://dobon.net/vb/bbs/log3-1/320.html解決策として、メッセージボックスを出して待機するのがわかりやすく、かつ、安全なコードですが、メッセージボックスのようなものが出て欲しくないのでしょうか?
メッセージボックスのようなものが出なければユーザーインターフェース的にわかりづらいと思うのですが、もしそれでも事情があってどうしても出したくないということであれば、if文内で待機せず、例えばif文内で「読み込むデータありフラグ」をオンにして抜け、マウスクリックイベントでそのフラグを見て、オンなら読み込み処理を実際に行うような設計にすればいいんじゃないかと思います。
-
あ~、WebBrowserではマウスクリックイベントが取れないんでした。すみません。GX999さんが書かれている通りですが、以下が大変参考になると思います。
VB2005のWebBrowserコントロールにMouseDownイベントを拡張する
http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserMouseDownEvent.htm
すべての返信
-
コード的には以下のようにしてできるようですが、そこに書かれているようにイベントドリブンの流れを切りますので、お勧めではありません。
クローズイングイベント
http://dobon.net/vb/bbs/log3-1/320.html解決策として、メッセージボックスを出して待機するのがわかりやすく、かつ、安全なコードですが、メッセージボックスのようなものが出て欲しくないのでしょうか?
メッセージボックスのようなものが出なければユーザーインターフェース的にわかりづらいと思うのですが、もしそれでも事情があってどうしても出したくないということであれば、if文内で待機せず、例えばif文内で「読み込むデータありフラグ」をオンにして抜け、マウスクリックイベントでそのフラグを見て、オンなら読み込み処理を実際に行うような設計にすればいいんじゃないかと思います。
-
あ~、WebBrowserではマウスクリックイベントが取れないんでした。すみません。GX999さんが書かれている通りですが、以下が大変参考になると思います。
VB2005のWebBrowserコントロールにMouseDownイベントを拡張する
http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserMouseDownEvent.htm