vb6屏蔽鼠标右键菜单

'模板------------------

  Option Explicit
  Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  Public OldWindowProc     As Long
  Public Const WM_CONTEXTMENU = &H7B                       '   µ±ÓÒ»÷Îı¾¿òʱ£¬²úÉúÕâÌõÏûÏ¢
 
   Const GWL_WNDPROC = (-4)
   
  Public Function SubClass1_WndMessage(ByVal hWnd As OLE_HANDLE, ByVal Msg As OLE_HANDLE, ByVal wp As OLE_HANDLE, ByVal lp As Long) As Long
          If Msg = WM_CONTEXTMENU Then
                    SubClass1_WndMessage = True
          Else
                    SubClass1_WndMessage = CallWindowProc(OldWindowProc, hWnd, Msg, wp, lp)
                '   Èç¹ûÏûÏ¢²»ÊÇWM_CONTEXTMENU£¬¾Íµ÷ÓÃĬÈϵĴ°¿Úº¯Êý´¦Àí
          End If
   
  End Function
 
Public Sub Hook(hWnd As Long)
    OldWindowProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf SubClass1_WndMessage)
End Sub

Public Sub UnHook(hWnd As Long)
    Call SetWindowLong(hWnd, GWL_WNDPROC, OldWindowProc)
End Sub

’窗体------------------

  Option Explicit
  Private Sub Form_Load()
          Hook Me.Text1.hWnd
  End Sub
   
  Private Sub Form_Unload(Cancel As Integer)
    UnHook Me.Text1.hWnd
  End Sub

 

 

 

 

 

 

posted @ 2009-01-04 14:09  绿色心情  阅读(578)  评论(0)    收藏  举报