首页
社区
课程
招聘
[求助]为什么控制台程序里WH_KEYBOARD 没反应 WH_KEYBOARD_LL 确有效果
发表于: 2018-4-16 15:36 2208

[求助]为什么控制台程序里WH_KEYBOARD 没反应 WH_KEYBOARD_LL 确有效果

2018-4-16 15:36
2208
HHOOK MyHook;                  //接收由SetWindowsHookEx返回的旧的钩子

							   //回调函数声明,为了尽早见到亲切的主函数,将回调函数的定义写在最后面

int CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);



int main()
{
	//安装钩子
	MyHook = SetWindowsHookEx(WH_KEYBOARD,

		(HOOKPROC)&KeyboardProc,   //回调函数地址

		0,

		GetCurrentThreadId());
 	printf_s("%d %x \n", MyHook, GetLastError());
	MSG msg;

	while (GetMessage(&msg, NULL, 0, 0))                   //消息循环
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	};


	UnhookWindowsHookEx(MyHook);

	return 0;
    
}

//回调函数,用于处理截获的按键消息

int CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
	MessageBox(0, _T("adsad"), 0, 0);
	printf("%d %x  %x\n", code, wParam, lParam);
	tagKBDLLHOOKSTRUCT*  a = (tagKBDLLHOOKSTRUCT*)lParam;
	//printf("%d %x  %x\n", code, wParam, a->vkCode);         //输出按键信息,注意这里按下和弹起都会输出
	return CallNextHookEx(MyHook, code, wParam, lParam);  //将消息还给钩子链,不要影响别人
}

如上代码  本意是 hook 自己, 实际  运行后在 控制台里 敲键盘  KeyboardProc    不会触发

改成  
 SetWindowsHookEx(WH_KEYBOARD_LL,

		(HOOKPROC)&KeyboardProc,   //回调函数地址

		0,

		0);
全局 hook   按键 就会触发   KeyboardProc     回调了?  //这里会触发我觉得很正常  关键是 上面 为什么不会触发呢

谢谢大佬们

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//