键盘钩子修改键值

来源:互联网 发布:国际空间站知乎 编辑:程序博客网 时间:2024/05/22 03:39

在修改键值的时候,需要挂住WH_GETMSG 挂住WM_KEYBORD是不可以的。一个按键 你会不清楚对方使用WM_KEYdwon KEYUP WM_CHAR哪个消息的,最好全部挂钩



#define DLL_EXPORTS



#include"keyboard.h"


HMODULE CHookKeyBord::s_DllHandle = NULL;
HHOOK   CHookKeyBord::m_hKeyBordHook = NULL;


LRESULT CHookKeyBord::KeyboardProc(int cCode, WPARAM wParam, LPARAM lParam )
{
    MSG* msg = (MSG*) lParam;
     cout<<" msg "<<msg->wParam<<endl;
    if(msg->message == WM_KEYDOWN || msg->message == WM_KEYUP ||msg->message == WM_CHAR)
    {
        msg->wParam += 1;
        cout<<msg->wParam<<endl;
        return 1;
    }
    return CallNextHookEx(CHookKeyBord::m_hKeyBordHook,cCode,wParam,lParam);
}
CHookKeyBord::CHookKeyBord()
{
    
}


CHookKeyBord::~CHookKeyBord()
{


}
void CHookKeyBord::SetKeyBordHook(DWORD dwPid /* = 0 */)
{
    CHookKeyBord::m_hKeyBordHook = SetWindowsHookEx(WH_GETMESSAGE,CHookKeyBord::KeyboardProc,CHookKeyBord::s_DllHandle,dwPid);
}




BOOL WINAPI DllMain(__in HANDLE _HDllHandle, __in DWORD _Reason, __in_opt LPVOID _Reserved)
{
    CHookKeyBord::s_DllHandle =(HMODULE) _HDllHandle;
    return true;
}
原创粉丝点击