全局Hook

FormCode

Option Explicit


Private Sub form_load()
Text1.Text = ""
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf MyKBHook, App.hInstance, 0)
If hHook = 0 Then  '如果钩子注册失败会返回0,否则返回注册的钩子句柄
    MsgBox "遇到反钩子程序!程序即将退出!"
    End
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx hHook
End Sub

 

ModuleCode

Option Explicit

Public hHook As Long     '用来存放钩子的句柄
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
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
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public a As Long
     Public Type EVENTMSG
           vKey As Long
           sKey As Long
           flag As Long
           time As Long
     End Type
    
Public mymsg   As EVENTMSG
Public Const WH_KEYBOARD_LL = 13
Public Const WM_KEYDOWN = &H100

Public Function MyKBHook(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'这些参数在不同钩子中具有不同含义,在这里ncode 是类型代码
If ncode = 0 Then
If wParam = WM_KEYDOWN Then   '在这里wParam 表示键盘事件,具体的按键信息保存在lParam 指针所指向的内存区域中
'把内存中lParam 指针所指向的数据复制到mymsg这个自定义类型
    CopyMemory mymsg, ByVal lParam, Len(mymsg)
     '你要做的事情
     'Form1.Text1.Text = Form1.Text1.Text & " " & Chr(mymsg.vKey)
     Select Case mymsg.vKey
        Case 6
            Form1.Text1.Text = Form1.Text1.Text & "[Tab]"
        Case 16, 160
            Form1.Text1.Text = Form1.Text1.Text & "[Shift]"
        Case 13
            Form1.Text1.Text = Form1.Text1.Text & "[Enter]"
        Case 189
            Form1.Text1.Text = Form1.Text1.Text & "[-]"
           
        Case Else
            Form1.Text1.Text = Form1.Text1.Text & Chr(mymsg.vKey)
       
     End Select
End If
End If

'将消息传给下一个钩子,如果你想锁定键盘,只需要把这句改成MyKBHook =-1,表示吃掉这个消息,这样键盘就输入不了了:-)
MyKBHook = CallNextHookEx(hHook, ncode, wParam, lParam)
End Function

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值