全局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;

}

效果图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容