C++ 不打开串口,只是利用钩子监听的demo
时间: 2024-03-13 16:45:34 浏览: 60
C++侦听串口通讯程序
5星 · 资源好评率100%
好的,我理解了你的问题。下面是一个利用钩子监听键盘事件的示例代码:
```
#include <windows.h>
#include <iostream>
HHOOK hKeyboardHook;
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION) {
KBDLLHOOKSTRUCT* pKeyboardStruct = (KBDLLHOOKSTRUCT*)lParam;
if (wParam == WM_KEYDOWN) {
std::cout << "Key pressed: " << pKeyboardStruct->vkCode << std::endl;
}
else if (wParam == WM_KEYUP) {
std::cout << "Key released: " << pKeyboardStruct->vkCode << std::endl;
}
}
return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
}
int main()
{
hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, nullptr, 0);
if (hKeyboardHook == nullptr) {
std::cerr << "Error: Unable to set keyboard hook!" << std::endl;
return 1;
}
MSG msg;
while (GetMessage(&msg, nullptr, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(hKeyboardHook);
return 0;
}
```
这段代码会安装一个低级键盘钩子来监听键盘事件,如果有键盘事件发生,就会将按下或释放的键的虚拟键码输出到控制台。在主循环中,使用GetMessage函数来获取消息并将其分派给合适的窗口过程,以便处理钩子事件。
你可以根据需要修改钩子类型和处理程序来监听其他类型的事件。注意,钩子是全局的,因此必须小心使用,以免对其他应用程序产生负面影响。
阅读全文