如题

解决方案 »

  1.   

    Private Sub rtbContent_KeyDown(KeyCode As Integer, Shift As Integer)
        If (vbCtrlMask And Shift) And (KeyCode = vbKeyV) Then '
           vbctrlmask=2 ,用来测试ctrl键是否按下
            KeyCode = 0
        End If
        
    End Sub
      

  2.   

    Module Code:
    Option ExplicitDeclare 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 RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
    Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As LongPublic Const WM_HOTKEY = &H312
    Public Const MOD_CONTROL = &H2
    Public Const GWL_WNDPROC = (-4)Public hWndLong As Long
    Public Modifiers As Long, uVirtKey As Long, idHotKey As LongPublic Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If Msg = WM_HOTKEY Then
        If wParam = 1& Then
            '禁止在RichTextBox的Ctrl+V热键 
        Else    
            WndProc = CallWindowProc(hWndLong,hwnd, Msg, wParam, lParam)
        End If
        endif
    End FunctionForm Code:
    Private Sub Form_Load()
        Dim ret As Long
        
        hWndLong = GetWindowLong(RichText1.hwnd, GWL_WNDPROC)
        ret = SetWindowLong(RichText1.hwnd, GWL_WNDPROC, AddressOf WndProc)
        idHotKey = 1
        Modifiers = MOD_CONTROL
        uVirtKey = vbkeyv
        ret = RegisterHotKey(RichText1.hwnd, idHotKey, Modifiers, uVirtKey)
    end sub
    Private Sub Form_Unload(Cancel As Integer)
        Dim ret As Long
        ret = SetWindowLong(RichText1.hwnd, GWL_WNDPROC, hWndLong)
        Call UnregisterHotKey(RichText1.hwnd, uVirtKey)
    End Sub