全局WH_KEYBOARD_LL消息HOOK,不需要DLL

#include

#include

LRESULT CALLBACK myproc(int code, WPARAM w, LPARAM l){

PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)l;

const char* info = NULL;

if (w == WM_KEYDOWN)

info = "按下";

else if (w == WM_KEYUP)

info = "彈起";

else if (w == WM_SYSKEYDOWN)

info = "按下系統(tǒng)按鍵";

else if (w == WM_SYSKEYUP)

info = "彈起系統(tǒng)按鍵";

printf("%s - 虛擬碼 [%04x], 掃描碼 [%04x] 標(biāo)志 [%04x]\n", info, p->vkCode, p->scanCode,p->flags);

// 消息時(shí)間戳 [%d] 附加信息 [%p] ,p->time,p->dwExtraInfo

return CallNextHookEx(myproc, code, w, l);

}

int main(int argc, PCHAR argv[]){

HHOOK kbhook;

kbhook = SetWindowsHookEx(WH_KEYBOARD_LL, myproc, GetModuleHandle(NULL), 0);

if (kbhook == NULL){

printf("SetWindowsHookEx failed %d\n", GetLastError());

}

//消息循環(huán)

MSG msg;

while (GetMessage(&msg, NULL, 0, 0)){

TranslateMessage(&msg);

DispatchMessage(&msg);

};

UnhookWindowsHookEx(kbhook);

getchar();

return 0;

}

效果圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容