同名タイトルで、マイクロソフト社のサポートオンラインに
載っていたものを、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
サポートオンラインのURLを忘れてました。
http://support.microsoft.com/kb/246247/ja
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(でよかったかな?)
を使えばよいかもしれません。
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
元々の nn さんのコードで言えば、
> Private Function doc_onclick() As Boolean
を、
Private Function doc_onclick() As Boolean Handles doc.onclick
にしてやるだけで OK ですね。
ただ、今回は COM のオブジェクトに頼る必要も無いので、
YAS さんのコードが最良かと思います。追加の参照設定も不要ですし。
| ツイート |
|