模块中: Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As LongPublic Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook As Long, _ ByVal lpfn As Long, _ ByVal hmod As Long, _ ByVal dwThreadId As Long) As Long Public Declare Function CallNextHookEx Lib "user32" _ (ByVal hHook As Long, _ ByVal ncode As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Public Declare Function UnhookWindowsHookEx Lib "user32" _ (ByVal hHook As Long) As Long Public Function HookFunc(ByVal ncode As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long HookFunc = 0 '表示要处理这个讯息 Select Case wParam Case vbKeyF1 HookFunc = 1 ss(‘处理函数) Case vbKeyF2 HookFunc = 1 End Select
' If wParam = vbKeySnapshot Then '侦测 有没有按到PrintScreen键 ' HookFunc = 1 '在这个Hook便吃掉这个讯息 ' MsgBox "1" ' End If
End Function窗体: Private Sub Form_Load() On Error GoTo error hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf HookFunc, App.hInstance, App.ThreadID) error: End Sub Public Sub Form_Unload(Cancel As Integer) UnhookWindowsHookEx hHook hHook = 0
End Sub
忘了写参数 Public Const WH_CALLWNDPROC = 4 Public Const WH_CALLWNDPROCRET = 12 Public Const WH_CBT = 5 Public Const WH_DEBUG = 9 Public Const WH_FOREGROUNDIDLE = 11 Public Const WH_GETMESSAGE = 3 Public Const WH_HARDWARE = 8 Public Const WH_JOURNALPLAYBACK = 1 Public Const WH_JOURNALRECORD = 0 Public Const WH_KEYBOARD = 2 Public Const WH_MOUSE = 7 Public Const WH_MSGFILTER = (-1) Public Const WH_SHELL = 10 Public Const WH_SYSMSGFILTER = 6 Public hHook As Long
Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As LongPublic Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, _
ByVal ncode As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long Public Function HookFunc(ByVal ncode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
HookFunc = 0 '表示要处理这个讯息
Select Case wParam
Case vbKeyF1
HookFunc = 1
ss(‘处理函数)
Case vbKeyF2
HookFunc = 1
End Select
' If wParam = vbKeySnapshot Then '侦测 有没有按到PrintScreen键
' HookFunc = 1 '在这个Hook便吃掉这个讯息
' MsgBox "1"
' End If
Call CallNextHookEx(hHook, ncode, wParam, lParam) '传给下一个Hook
End Function窗体:
Private Sub Form_Load()
On Error GoTo error
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf HookFunc, App.hInstance, App.ThreadID)
error:
End Sub
Public Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx hHook
hHook = 0
End Sub
Public Const WH_CALLWNDPROC = 4
Public Const WH_CALLWNDPROCRET = 12
Public Const WH_CBT = 5
Public Const WH_DEBUG = 9
Public Const WH_FOREGROUNDIDLE = 11
Public Const WH_GETMESSAGE = 3
Public Const WH_HARDWARE = 8
Public Const WH_JOURNALPLAYBACK = 1
Public Const WH_JOURNALRECORD = 0
Public Const WH_KEYBOARD = 2
Public Const WH_MOUSE = 7
Public Const WH_MSGFILTER = (-1)
Public Const WH_SHELL = 10
Public Const WH_SYSMSGFILTER = 6
Public hHook As Long