tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
IE_DocumentComplete イベント内での書き込み方法(VB.NET) ( No.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



 [スレッド一覧へ] [親スレッドへ]