此法很灵:
先建一模块:
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private 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
Private Const GWL_WNDPROC = (-4)
Private Const WM_RBUTTONDOWN = &H204Private m_lpPrevDisableRButtonDownWindowProc As LongFunction DisableRButtonDownWindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If uMsg = WM_RBUTTONDOWN Then
        Exit Function
    End If
   DisableRButtonDownWindowProc = CallWindowProc(m_lpPrevDisableRButtonDownWindowProc, hwnd, uMsg, wParam, lParam)
End FunctionPublic Function HookText(ByVal hwnd As Long) As Boolean
     m_lpPrevDisableRButtonDownWindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf DisableRButtonDownWindowProc)
End FunctionPublic Function UnHookText(ByVal hwnd As Long) As Boolean
    Call SetWindowLong(hwnd, GWL_WNDPROC, m_lpPrevDisableRButtonDownWindowProc)
End Function在:
Private Sub Form_Load()
 HookText Text1.hwnd
End subPrivate Sub Form_UnLoad()
  UnHookText Text1.hwnd
End sub

解决方案 »

  1.   

    用richtextbox代替text控件,在richtextbox控件的属性里,有一个属性可以设置屏蔽右键菜单
      

  2.   

    我没有用API解决了!!呵呵
      

  3.   

    我的土办法:
    Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
        If KeyCode = 93 Then MaskMenu Text1
    End SubPrivate Sub MaskMenu(ByVal oText As TextBox)
        With oText
            .Enabled = False
            .Enabled = True
            .SetFocus
            SendKeys "%"
        End With
    End Sub
    Private Sub Text1_KeyPress(KeyAscii As Integer)
        If KeyAscii = 22 Then KeyAscii = 0
    End SubPrivate Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = vbRightButton Then MaskMenu Text1
    End Sub我的机器上完全通过
    各位看一下有没有问题?
      

  4.   

    mndsoft(枕善居主)的方法只屏蔽了右键菜单,但是Ctrl+V无效。而且应该是Private Sub Form_Unload(Cancel As Integer)
      

  5.   

    不应该拦截WM_RBUTTONDOWN!应该拦截的是WM_CONTEXTMENU消息!
      

  6.   

    不应该拦截WM_RBUTTONDOWN!应该拦截的是WM_CONTEXTMENU消息!