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
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
If (vbCtrlMask And Shift) And (KeyCode = vbKeyV) Then '
vbctrlmask=2 ,用来测试ctrl键是否按下
KeyCode = 0
End If
End Sub
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