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;
}
相关推荐
代码村新手3 分钟前
C++-String
开发语言·c++
历程里程碑2 小时前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
2501_940315263 小时前
航电oj:首字母变大写
开发语言·c++·算法
lhxcc_fly3 小时前
手撕简易版的智能指针
c++·智能指针实现
浒畔居3 小时前
泛型编程与STL设计思想
开发语言·c++·算法
Fcy6483 小时前
C++ 异常详解
开发语言·c++·异常
机器视觉知识推荐、就业指导4 小时前
Qt 和 C++,是不是应该叫 Q++ 了?
开发语言·c++·qt
liu****4 小时前
三.Qt图形界面开发完全指南:从入门到掌握常用控件
开发语言·c++·qt
小龙报4 小时前
【C语言进阶数据结构与算法】单链表综合练习:1.删除链表中等于给定值 val 的所有节点 2.反转链表 3.链表中间节点
c语言·开发语言·数据结构·c++·算法·链表·visual studio
EmbedLinX5 小时前
Linux之内存管理
linux·服务器·c语言·c++