|
本帖最后由 Manrce 于 2020-1-20 10:28 编辑
我想通过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
复制代码
|
|