サンプル投稿用掲示板  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
  
  
 |