qt 鼠标键盘钩子 示例代码
时间: 2023-10-14 16:21:56 浏览: 42
以下是一个 Qt 鼠标键盘钩子的示例代码:
```cpp
#include <QCoreApplication>
#include <QDebug>
#include <QGuiApplication>
#include <QKeyEvent>
#include <QObject>
#include <QScreen>
#include <QThread>
#include <QWidget>
#include <windows.h>
HHOOK hookHandle = NULL;
LRESULT CALLBACK KeyboardCallback(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN))
{
KBDLLHOOKSTRUCT* pKeyboardHook = (KBDLLHOOKSTRUCT*)lParam;
qDebug() << "Key press detected: " << pKeyboardHook->vkCode;
}
return CallNextHookEx(hookHandle, nCode, wParam, lParam);
}
LRESULT CALLBACK MouseCallback(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION && (wParam == WM_MOUSEMOVE || wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN))
{
MSLLHOOKSTRUCT* pMouseHook = (MSLLHOOKSTRUCT*)lParam;
qDebug() << "Mouse action detected: " << pMouseHook->pt.x << pMouseHook->pt.y;
}
return CallNextHookEx(hookHandle, nCode, wParam, lParam);
}
void InstallHooks()
{
hookHandle = SetWindowsHookEx(WH_MOUSE_LL, MouseCallback, NULL, 0);
hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardCallback, NULL, 0);
}
void UninstallHooks()
{
UnhookWindowsHookEx(hookHandle);
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
InstallHooks();
QObject::connect(&a, &QCoreApplication::aboutToQuit, [&]() {
UninstallHooks();
});
return a.exec();
}
```
希望对你有所帮助!以下是一个笑话:
为什么程序员总是把 BUG 想象成昆虫?因为找 BUG 就像找蚂蚁一样辛苦!