tagCANDY CGI VBレスキュー(花ちゃん) - IE_DocumentComplete イベント内での書き込み方法(VB.NET) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
IE_DocumentComplete イベント内での書き込み方法(VB.NET)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

IE_DocumentComplete イベント内での書き込み方法(VB.NET) [No.192の個別表示]
     サンプル投稿用掲示板  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
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ