Imports System.Windows.Forms
Public Class WebBrowserEx : Inherits WebBrowser
Private Const WM_PARENTNOTIFY As Integer = &H210
Private Enum WM As Integer
WM_LBUTTONDOWN = &H201
WM_RBUTTONDOWN = &H204
WM_MBUTTONDOWN = &H207
WM_XBUTTONDOWN = &H20B
End Enum
Private Enum XBUTTON As Integer
XBUTTON1 = &H1
XBUTTON2 = &H2
End Enum
Public Shadows Event MouseDown As MouseEventHandler
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_PARENTNOTIFY Then
Select Case LOWORD(m.WParam.ToInt32)
Case WM.WM_LBUTTONDOWN
Dim e As New MouseEventArgs(MouseButtons.Left, 1, LOWORD(m.LParam.ToInt32), HIWORD(m.LParam.ToInt32), 0)
RaiseEvent MouseDown(Me, e)
Case WM.WM_RBUTTONDOWN
Dim e As New MouseEventArgs(MouseButtons.Right, 1, LOWORD(m.LParam.ToInt32), HIWORD(m.LParam.ToInt32), 0)
RaiseEvent MouseDown(Me, e)
Case WM.WM_MBUTTONDOWN
Dim e As New MouseEventArgs(MouseButtons.Middle, 1, LOWORD(m.LParam.ToInt32), HIWORD(m.LParam.ToInt32), 0)
RaiseEvent MouseDown(Me, e)
Case WM.WM_XBUTTONDOWN
Select Case HIWORD(m.WParam.ToInt32)
Case XBUTTON.XBUTTON1
Dim e As New MouseEventArgs(MouseButtons.XButton1, 1, LOWORD(m.LParam.ToInt32), HIWORD(m.LParam.ToInt32), 0)
RaiseEvent MouseDown(Me, e)
Case XBUTTON.XBUTTON2
Dim e As New MouseEventArgs(MouseButtons.XButton2, 1, LOWORD(m.LParam.ToInt32), HIWORD(m.LParam.ToInt32), 0)
RaiseEvent MouseDown(Me, e)
End Select
End Select
End If
MyBase.WndProc(m)
End Sub
'下位16ビットを取得する
Private Function LOWORD(ByVal DWORD As Integer) As Short
Return CShort(DWORD And &HFFFFI)
End Function
'上位16ビットを取得する
Private Function HIWORD(ByVal DWORD As Integer) As Short
Return CShort(DWORD >> 16)
End Function
End Class