我想通过HOOK同时监控鼠标和键盘的操作,获得鼠标的当前坐标和我按下的按键码。
鼠标这个hook没有问题,但是当我加上键盘hook时候,发现释放不了键盘的hook.
点击结束后,鼠标hook停止了但是键盘还在继续运行。请各位帮帮我。
代码如下:
Sub UNHOOK() '卸钩子
UnhookWindowsHookEx Mhook2
UnhookWindowsHookEx Mhook
Mhook2 = 0
Mhook = 0
End Sub
Sub MOUSEHOOK()
Mhook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MyMhook, Application.Hinstance, 0)
Mhook2 = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf MyMhookkey, Application.Hinstance, 0)
If Mhook = 0 Then MsgBox "钩子注册失败"
If Mhook2 = 0 Then MsgBox "钩子注册失败"
End Sub
Public Function MyMhook(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If ncode = 0 Then
If wParam = WM_MOUSEMOVE Then
Dim p As POINTAPI
GetCursorPos p
GetmousePos.TextBox1.Value = p.X & "," & p.Y
End If
Else
MyMhook = CallNextHookEx(Mhook, ncode, wParam, lParam)
End If
MyMhook = CallNextHookEx(Mhook, ncode, wParam, lParam)
End Function
Public Function MyMhookkey(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If ncode = 0 Then
If wParam = WM_KEYDOWN Then
CopyMemory mymsg, ByVal lParam, LenB(mymsg)
a = Chr(mymsg.vKey)
MsgBox mymsg.vKey
End If
Else
MyMhookkey = CallNextHookEx(Mhook2, ncode, wParam, lParam)
End If
MyMhookkey = CallNextHookEx(Mhook2, ncode, wParam, lParam)
End Function