标签:style blog class code c tar
作者 : 卿笃军
系统钩子:钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。
下面演示如何安装进程内键盘钩子:
第一步:打开VC6.0,创建一个基于对话框的MFC应用程序。
第二步:在BOOL CHookDlg::OnInitDialog()函数上面编写如下代码:(注意是在上面编写,不是在OnInitDialog()里面)
HHOOK g_hKeyboard = NULL; LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wParam, LPARAM lParam) { return 1; }第三步:在OnInitDialog()函数里面安装键盘钩子,复制粘贴如下代码:
g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());
第四步:编译->链接->运行:这时候你发现键盘事件已经不能响应了~~~
当然,如果你只想屏蔽掉空格键,你可以这样写:
LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wParam, LPARAM lParam) { if (VK_SPACE == wParam) return 1; else return CallNextHookEx(g_hKeyboard, ncode, wParam, lParam); }如果按下的是空格键,直接返回,告诉系统,该消息已执行。否则将消息传给下一个钩子~~~
还有一种就是,需要屏蔽一些组合键,比如:Alt+F4,可以用如下方式实现:
LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wParam, LPARAM lParam) { if (VK_F4 == wParam || (1 == (lParam>>29 & 1))) return 1; else return CallNextHookEx(g_hKeyboard, ncode, wParam, lParam); }lParam参数各位的含义:
参考文献:模拟键盘鼠标按键,http://m.blog.csdn.net/blog/Plutus_Lee/16993445
钩子编程(HOOK) 安装进程内键盘钩子,布布扣,bubuko.com
标签:style blog class code c tar
原文地址:http://blog.csdn.net/qingdujun/article/details/25838389