Hook局部钩子实现
发布时间:2017年12月7日 作者:未知 查看次数:1079
Hook局部钩子实现 自:http://m.blog.csdn.net/xing_yufei/article/details/8458858 Hook学习笔记(一)Hook局部钩子实现一、初试Hook,屏蔽鼠标消息 创建一个MFC工程,工程名test,基于对话框 创建一个全局函数,这个函数一会会被安装为钩子 LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam) 找到CtestDlg的OnInitDialog()函数添加下面的代码: 生成解决方案,执行一下,发现鼠标在这个程序的界面上失效了。 二、屏蔽键盘消息 在资源视图中,为对话框添加一个编辑框。 创建一个全局变量HHOOK g_hKeyBoard; 这个变量一会用来接收SetWindowsHookEx所产生的钩子句柄。 创建一个全局函数: LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam,LPARAM lParam) 转到CtestDlg::OnInitDialog() 将SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());修改为: SetWindowsHookEx(WH_KEYBOARD,KeyBoardProc,NULL,GetCurrentThreadId()); 重新生成这个工程的解决方案,执行一下这个程序,在编辑框中输入,会发现按空格不会有反应了。 按下Alt+F4,退出这个程序。 现在我想屏蔽Alt+F4,可以修改回调函数: LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam,LPARAM lParam) 重新生成这个工程的解决方案,执行一下这个程序,会发现再按Alt+F4不会退出程序了。 现在试试按F3退出程序,修改回调函数: LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam,LPARAM lParam) 重新生成这个工程的解决方案,执行一下这个程序,会发现按Alt+F4不会退出程序,按F3退出了程序。 按F5,恢复这个程序正常的消息机制,修改回调函数: LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam,LPARAM lParam) 重新生成这个工程的解决方案,执行一下这个程序,按下F5,在文本框里可以正常输入空格了。
|
|
|