HOOKキーボードフック

867 ワード

class Hook
{
public:
    Hook(){}
    ~Hook(){}
public:
    void unInstallHook();
    void installHook();
};

-------------   ------------

#include 
#include 
#pragma comment(lib, "User32.lib")

static HHOOK keyHook=nullptr;
LRESULT CALLBACK keyProc(int nCode,WPARAM wParam,LPARAM lParam)
{
    KBDLLHOOKSTRUCT *pkbhs=(KBDLLHOOKSTRUCT*)lParam;
    if(nCode == HC_ACTION){
        //qDebug()<vkCode;
        return 1;//  1          ,  0      ,      
    }
    return CallNextHookEx(keyHook, nCode, wParam, lParam);
}


void Hook::unInstallHook()
{
    if(keyHook!=nullptr)
    {
        UnhookWindowsHookEx(keyHook);//            
        keyHook=nullptr;
    }
}

void Hook::installHook()
{
    keyHook = ::SetWindowsHookEx( WH_KEYBOARD_LL,keyProc,nullptr,0);
}