全局hook键盘消息

来源:互联网 发布:知乎接口 编辑:程序博客网 时间:2024/05/17 05:57

把hook功能写进dll,程序调用dll,对键盘消息进行hook

hook.dll源代码如下

#include <windows.h>extern "C" __declspec(dllexport) VOID SetHookOn();extern "C" __declspec(dllexport) VOID SetHookOff();HHOOK g_Hook = NULL;HINSTANCE g_Inst = NULL;LRESULT CALLBACK KeyboardProc(int code, WPARAM w, LPARAM l){if(w == WM_KEYDOWN)        MessageBox(NULL,0,TEXT("摁下按键"),0);    else if(w == WM_KEYUP)        MessageBox(NULL,0,TEXT("抬起按键"),0);return CallNextHookEx(g_Hook,code,w,l);}BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){g_Inst = (HINSTANCE)hModule;return true;}VOID SetHookOn(){g_Hook = SetWindowsHookEx(WH_KEYBOARD_LL,KeyboardProc,g_Inst,0);}VOID SetHookOff(){UnhookWindowsHookEx (g_Hook);}


MFC窗口程序部分代码如下

#include <windows.h>extern "C" VOID SetHookOn();extern "C" VOID SetHookOff();#pragma comment(lib,"hook.lib")

void Cmfc4Dlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码SetHookOn();}void Cmfc4Dlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码SetHookOff();}


点击Button1后,再按键盘,弹出窗口如下





0 0
原创粉丝点击