钩子编程(HOOK) 安装进程内键盘钩子

Posted yangykaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了钩子编程(HOOK) 安装进程内键盘钩子 相关的知识,希望对你有一定的参考价值。

摘要:钩子能够监视系统或进程中的各种事件消息。截获发往目标窗体的消息并进行处理。这样,我们就能够在系统中安装自己定义的钩子,监视系统中特定事件的发生。完毕特定的功能,比方截获键盘、鼠标的输入。屏幕取词,日志监视等等。



以下演示怎样安装进程内键盘钩子,


Step 1:打开VC6.0。创建一个基于对话框的MFC应用程序。


Step 2:在BOOL CHookDlg::OnInitDialog()函数上面编写例如以下代码:(注意是在上面编写。不是在OnInitDialog()里面)

HHOOK g_hKeyboard = NULL;

LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wParam, LPARAM lParam)
{
	return 1;
}


Step 3:在OnInitDialog()函数里面安装键盘钩子。复制粘贴例如以下代码,

g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());


Step 4:编译->链接->执行:这时候你发现键盘事件已经不能响应了~~~

技术分享


当然。假设你仅仅想屏蔽掉空格键,你能够这样写,

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參数各位的含义例如以下:

技术分享

想了解很多其它关于进程内钩子。能够阅读这篇文章《钩子编程(HOOK) 安装进程内鼠标钩子










以上是关于钩子编程(HOOK) 安装进程内键盘钩子 的主要内容,如果未能解决你的问题,请参考以下文章

钩子(hook)编程

利用C++编程,将hook(钩子)加到程序每一个函数,其中hook后跳转到自己自定义函数代码,实现函数打印功能

delphi 键盘全局钩子

EVC编程点滴四 - 钩子

键盘钩子怎么 使用

Windows API 教程 hook 钩子监听