积极答复者
如何屏蔽ShockwaveFlash的右键,同时左键有效?

问题
答案
-
Code Snippet
Public Delegate Function NewWndProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function CallWindowProc(ByVal wndProc As IntPtr, ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtrEnd Function
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal wndproc As NewWndProc) As IntPtrEnd Function
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As IntPtr) As IntPtrEnd Function
Public Const GWL_WNDPROC As Integer = -4
Private Const WM_RBUTTONDOWN = &H204Code SnippetPrivate wpr As NewWndProc
Private oldWndProc As IntPtr
Public Sub Hook()
wpr = New NewWndProc(AddressOf Me.WindowProc)
oldWndProc = SetWindowLong(AxShockwaveFlash1.Handle, GWL_WNDPROC, wpr)
End Sub
Public Sub UnHook()
SetWindowLong(AxShockwaveFlash1.Handle, GWL_WNDPROC, oldWndProc)
End SubPrivate Function WindowProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
If (msg = WM_RBUTTONDOWN) Then ' 屏蔽右键
WindowProc = 0
Exit Function
End IfWindowProc = CallWindowProc(oldWndProc, hWnd, msg, _
wParam, lParam)End Function
Code SnippetPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadHook()End SubPrivate Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
UnHook()
End Sub
全部回复
-
Code Snippet
Public Delegate Function NewWndProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function CallWindowProc(ByVal wndProc As IntPtr, ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtrEnd Function
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal wndproc As NewWndProc) As IntPtrEnd Function
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As IntPtr) As IntPtrEnd Function
Public Const GWL_WNDPROC As Integer = -4
Private Const WM_RBUTTONDOWN = &H204Code SnippetPrivate wpr As NewWndProc
Private oldWndProc As IntPtr
Public Sub Hook()
wpr = New NewWndProc(AddressOf Me.WindowProc)
oldWndProc = SetWindowLong(AxShockwaveFlash1.Handle, GWL_WNDPROC, wpr)
End Sub
Public Sub UnHook()
SetWindowLong(AxShockwaveFlash1.Handle, GWL_WNDPROC, oldWndProc)
End SubPrivate Function WindowProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
If (msg = WM_RBUTTONDOWN) Then ' 屏蔽右键
WindowProc = 0
Exit Function
End IfWindowProc = CallWindowProc(oldWndProc, hWnd, msg, _
wParam, lParam)End Function
Code SnippetPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadHook()End SubPrivate Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
UnHook()
End Sub