2020-04-01 全局热键
'******************* .Bas 模块里面的代码
Option Explicit
Public Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Public Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public 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
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const WM_HOTKEY = &H312
Public Const GWL_WNDPROC = (-4)
Public p&
Public Function wnd(ByVal hWnd As Long, ByVal Msg As Long, ByVal wp As Long, ByVal lp As Long) As Long
If Msg = WM_HOTKEY Then
If wp = &HB000 Then
'在这里你想干什么就写什么代码
MsgBox "你按了 Ctrl + Alt + V 键"
ElseIf wp = &HB001 Then
MsgBox "你按了 Ctrl + Alt + B 键"
End If
End If
wnd = CallWindowProc(p, hWnd, Msg, wp, lp)
End Function
'Form
Private Sub Form_Load()
RegisterHotKey Me.hWnd, &HB000, MOD_CONTROL + MOD_ALT, vbKeyV '定义 Ctrl + Alt + V 为热键
RegisterHotKey Me.hWnd, &HB001, MOD_CONTROL + MOD_ALT, vbKeyB '定义 Ctrl + Alt + B 为热键
p = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf wnd)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call UnregisterHotKey(Me.hWnd, &HB000&) '撤销热键的注册Ctrl + Alt + V
Call UnregisterHotKey(Me.hWnd, &HB001&) '撤销热键的注册Ctrl + Alt + B
SetWindowLong Me.hWnd, GWL_WNDPROC, p
End Sub
