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;
}
相关推荐
码匠许师傅10 小时前
【C++ 面试真题】30. 聊聊 C++ 的互斥锁与读写锁
java·c++·面试
ShineWinsu10 小时前
对于 C++:C++14中从变量模板、泛型 Lambda 到并发与字面量的解析
c++·算法
一木 之林13 小时前
四、STL容器与数据结构
开发语言·数据结构·c++
程与留13 小时前
07_QMainWindow 与应用程序框架——菜单栏、工具栏、状态栏
c++·qt
_Narcissus_14 小时前
二分算法笔记及例题
数据结构·c++·笔记·算法·蓝桥杯·查找·二分算法
青少儿编程课堂16 小时前
用图形化编程做一个“少年探险闯关”小游戏:方向键控制、碰撞检测与多关卡串起完整项目
c++·python·算法·bfs·信息学竞赛
liulilittle17 小时前
长上下文的成本结构与「甜点区间」——从推理引擎的物理约束看 200K/256K/400K
c++·人工智能·ai·llm·注意力·qkv
十五年专注C++开发17 小时前
100w条数据丝滑滚动!Qt Model/View 架构实战(二)
开发语言·c++·qt
skr爱码士17 小时前
06_Qt 常用数据类型与容器:QString、QList、QVector、QMap 的性能与实现分析
开发语言·c++·qt
奶茶树18 小时前
【C++】13. C++11新特性【上】
c语言·开发语言·c++·git·github