c++实现键盘hook

c++实现键盘hook

  1. 项目中用到监控键盘事件,但是,有一次自己的程序被其他置顶程序把按键事件给过滤了,所以需要添加监控键盘钩子的方法,代码样例如下:
cpp 复制代码
#include <iostream>
#include <Windows.h>

// 全局键盘钩子回调函数
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
    if (nCode >= 0) {
        if (wParam == WM_KEYDOWN) {
            KBDLLHOOKSTRUCT* kbdData = reinterpret_cast<KBDLLHOOKSTRUCT*>(lParam);
            int keyCode = kbdData->vkCode;

            // 在此处处理按键事件,例如输出按下的键码
            std::cout << "键码: " << keyCode << std::endl;
			// 过滤不想向下传递的按键,直接在这里return即可
			// return 1;
        }
    }

    // 调用下一个钩子,如果存在的话
    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int main() {
    // 注册全局键盘钩子
    HHOOK hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);

    if (hook == NULL) {
        std::cerr << "无法注册键盘钩子" << std::endl;
        return 1;
    }

    // 消息循环
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    // 卸载钩子
    UnhookWindowsHookEx(hook);

    return 0;
}
相关推荐
咸鱼Doyoung27 分钟前
《commander-cpp》单头文件的、链式调用的、自动生成帮助文档的C++命令行参数解析库
c++
2401_876221341 小时前
AtCoder Beginner Contest 439 - D - Kadomatsu Subsequence
c++·算法
天上飞的粉红小猪1 小时前
网络基础概念
linux·服务器·网络·c++
嵌入式进阶行者1 小时前
【算法】从数组中选取两个符合一定条件的数的算法与实例:华为OD机考双机位A卷 - 跳房子I
数据结构·c++·算法·链表
im_AMBER1 小时前
Leetcode 94 合并零之间的节点
数据结构·c++·笔记·学习·算法·leetcode
sayang_shao1 小时前
C++ 多线程【笔记】
c++
carver w1 小时前
MFC基于对话框Radio按钮的使用方法
c++·mfc
k***92162 小时前
如何在C++的STL中巧妙运用std::find实现高效查找
java·数据结构·c++
Cappi卡比2 小时前
性能提示(Performance Hints)
c++
王老师青少年编程2 小时前
2025年12月GESP(C++四级): 建造
c++·算法·认证·gesp·csp·信奥赛·四级