簡単な方法は、トラップにアプリケーションレベルでWM_RBUTTONDOWNとWM_RBUTTONDBLCLKメッセージです。 Application.AddMessageFilter(instance of IMessageFilter)
ステートメントを使用して、アプリケーションにメッセージフィルターを追加できます。以下の例では、ImessageFilter interferaceはAXWebrowserコントロールを含むフォームで実装されています。フィルターはアプリケーション全体に適用されるため、フォームのアクティブ化/非アクティブ化時に追加/削除されます。
Public Class Form1
Implements IMessageFilter
Public Function PreFilterMessage(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage
Const WM_RBUTTONDOWN As Int32 = &H204
Const WM_RBUTTONDBLCLK As Int32 = &H206
' check that the message is WM_RBUTTONDOWN Or WM_RBUTTONDBLCLK
' verify AxWebBrowser1 is not null
' verify the target is AxWebBrowser1
Return (m.Msg = WM_RBUTTONDOWN OrElse m.Msg = WM_RBUTTONDBLCLK) AndAlso (AxWebBrowser1 IsNot Nothing) AndAlso (AxWebBrowser1 Is Control.FromChildHandle(m.HWnd))
End Function
Protected Overrides Sub OnActivated(e As EventArgs)
MyBase.OnActivated(e)
' Filter is application wide, activate filter with form
Application.AddMessageFilter(Me)
End Sub
Protected Overrides Sub OnDeactivate(e As EventArgs)
MyBase.OnDeactivate(e)
' Filter is application wide, remove when form not active
Application.RemoveMessageFilter(Me)
End Sub
End Class
私はこの問題をウェブブラウザの拡張版で修正しました!ご協力いただきありがとうございます ! –