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;
}
相关推荐
lingggggaaaa7 分钟前
免杀对抗——C2远控篇&PowerShell&C#&对抗AV-EDR&停用AMSI接口&阻断ETW跟踪&调用
c语言·开发语言·c++·学习·安全·c#·免杀对抗
zzzsde7 分钟前
【C++】异常:概念及使用
开发语言·c++·算法
繁星星繁7 分钟前
CMake快速上手
c语言·c++·编辑器·学习方法·visual studio code
量子炒饭大师16 分钟前
【一天一个计算机知识】—— 【编程百度】悬空指针
c语言·数据结构·c++·git·安全·github·dubbo
Chrikk32 分钟前
【下篇】C++20 约束、NCCL 通信与并发模型
c++·c++20·c++40周年
MC皮蛋侠客33 分钟前
C++17多线程编程全面指南
开发语言·c++
獭.獭.34 分钟前
C++ -- STL【vector的使用】
c++·stl·vector
郝学胜-神的一滴37 分钟前
Linux C++系统编程:使用mmap创建匿名映射区
linux·服务器·开发语言·c++·程序人生
李余博睿(新疆)42 分钟前
双向指针算法(练习)
c++
新手村领路人44 分钟前
c++ opencv缺少openh264-1.8.0-win64.dll
开发语言·c++