WebBrowser ホストの HTML ドキュメント イベントをシンクする方法


nn  2007-06-21 21:23:48  No: 136777

同名タイトルで、マイクロソフト社のサポートオンラインに
載っていたものを、VisualBasic2005で動作させたいと思って
とりあえずエラーが出ないように変更したのですが、
clickイベントを取得することができません。

他に修正する箇所があるのでしょうか?

/*************************************
* 以下ソースです
/*************************************
Imports mshtml

Public Class Form1

    Dim WithEvents doc As HtmlDocument

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("http://www.yahoo.co.jp/")
    End Sub

    Private Function doc_onclick() As Boolean
        MsgBox("Clicked the document!")
        ' Tell IE to continue processing the event.
        doc_onclick = True
    End Function

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Dim htm As IHTMLDocument2

        On Error Resume Next
        htm = WebBrowser1.Document.DomDocument

        If Err.Number = 0 Then
            MsgBox("HREF is " & htm.location.href)
        End If

        'doc = htm
        doc = WebBrowser1.Document.DomDocument
    End Sub

    Private Sub WebBrowser1_Navigating(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
        doc = Nothing
    End Sub
End Class


nn  2007-06-21 21:25:07  No: 136778

サポートオンラインのURLを忘れてました。

http://support.microsoft.com/kb/246247/ja


ヤマ@文系  2007-06-21 23:16:09  No: 136779

webbrowserコントロールがマネージでhttp://www.microsoft.com/japan/msdn/netframework/windowsforms/learning/features/WebBrowser/default.aspx

mshtmlクラスがアンマネージに基づいてるからではないでしょうか。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.htmldocument(VS.80).aspx

.net 2.0 の  webbroserコントロールのかわりに
アンマネージのshdocvw.dll(でよかったかな?)
を使えばよいかもしれません。


YAS  2007-06-22 07:10:13  No: 136780

VB2005ではこんな感じでしょうか。

Public Class Form1

    Dim WithEvents Doc As HtmlDocument

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.WebBrowser1.Navigate("http://www.yahoo.co.jp")
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Doc = DirectCast(sender, WebBrowser).Document
    End Sub

    Private Sub Doc_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.HtmlElementEventArgs) Handles Doc.Click
        MessageBox.Show("Clicked the document!")
    End Sub

End Class


魔界の仮面弁士  2007-06-22 10:19:27  No: 136781

元々の nn さんのコードで言えば、
> Private Function doc_onclick() As Boolean
を、
  Private Function doc_onclick() As Boolean Handles doc.onclick
にしてやるだけで OK ですね。

ただ、今回は COM のオブジェクトに頼る必要も無いので、
YAS さんのコードが最良かと思います。追加の参照設定も不要ですし。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加