サンプル投稿用掲示板 VB2005 〜 用トップページ VB6.0 用 トップページ
- 日時: 2011/03/29 13:59
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[インターネット][イベント][] * * キーワード:DocumentComplete,エラー,InternetExplorer,ReadyState <> "complete", * *********************************************************************************** タイトル : IE_DocumentComplete イベント内で書き込みができない 投 稿 日 : 2008/07/15(Tue) 11:23 元質問者 : 花ちゃん
VB2005 IE 7.0 Windows Vista(VB2005 IE 6.0 WindowsXP) 環境で IE の IE_DocumentComplete イベント内で TextBox 等のコントロールへ書き込み時 'System.InvalidOperationException' の初回例外が発生し、書き込みができません。
下記コードで再現できます。 'プロジェクト→参照の追加→COM→Microsoft Internet controls を参照設定して下さい。 Public Class Form1
Private WithEvents IE As SHDocVw.InternetExplorer Private myUrl As String
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click If Not (IE Is Nothing) Then IE.Quit() IE = Nothing End If myUrl = "http://hanatyan.sakura.ne.jp/top.htm" IE = New SHDocVw.InternetExplorer IE.Visible = True IE.Navigate2(myUrl.ToString) End Sub
Private Sub IE_DocumentComplete(ByVal pDisp As Object, _ ByRef URL As Object) Handles IE.DocumentComplete If Not TypeName(pDisp) = "IWebBrowser2" Or URL.ToString <> myUrl Then Exit Sub End If Debug.WriteLine(URL.ToString)
'下記はエラーが発生する 'System.InvalidOperationException' の初回例外が System.Windows.Forms.dll で発生しました。 '同様に、RichTextBox1.Text = URL.ToString でもエラーが発生して書き込みできない。 Me.Text = URL.ToString End Sub End Class
----------------------------------------------------------------------------------- 記事No : 7819 投稿日 : 2008/07/15(Tue) 12:49 回答者 : 魔界の仮面弁士 ----------------------------------------------------------------------------------- エラーの原因は、スレッドが異なるからでしょう。 Invoke メソッドでの呼び出しに切り替えてみてください。
Private Sub IE_DocumentComplete(ByVal pDisp As Object, ByRef URL As Object) Handles IE.DocumentComplete If Not TypeName(pDisp) = "IWebBrowser2" Then Return Invoke(New SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(AddressOf foo), pDisp, URL) End Sub
Private Sub foo(ByVal pDisp As Object, ByRef URL As Object) Me.Text = CStr(URL) End Sub
|