全局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 = "按下系統按鍵";

else if (w == WM_SYSKEYUP)

info = "彈起系統按鍵";

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

// 消息時間戳 [%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());

}

//消息循環

MSG msg;

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

TranslateMessage(&msg);

DispatchMessage(&msg);

};

UnhookWindowsHookEx(kbhook);

getchar();

return 0;

}

效果圖

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容