Winodws HOOK 之键盘钩子
来源:互联网 发布:.ds store windows 编辑:程序博客网 时间:2024/05/22 09:03
钩子(HOOK)是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息或特定事件(比如键盘和鼠标事件等),而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
以下是利用键盘钩子HOOK键盘操作的示例代码,实现了当捕获到键盘按键按下时会播放一段声音。
#include <windows.h>#include <tchar.h>#include <Mmsystem.h>#pragma comment(lib,"Winmm.lib");HHOOK hHook;// 键盘钩子回调函数LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){MSG msg;// 创建低级键盘钩子hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);// 主消息循环:while (GetMessage(&msg, NULL, 0, 0));// 卸载低级键盘钩子UnhookWindowsHookEx(hHook);return (int) msg.wParam;}// 低级键盘钩子回调函数LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam){KBDLLHOOKSTRUCT *kbllHookStruct = (KBDLLHOOKSTRUCT*)lParam;// 如果是按键按下if(wParam == WM_KEYDOWN){// 播放声音PlaySound(_T("shake.wav"),NULL, SND_FILENAME | SND_ASYNC);}TCHAR str[255]={0};_stprintf(str,_T("Msg Code = 0x%x, vkCode = %d\n"), wParam, kbllHookStruct->vkCode);OutputDebugString(str); // 将键盘消息传递给下一个钩子return CallNextHookEx(hHook, nCode, wParam, lParam);}
- Winodws HOOK 之键盘钩子
- HOOK全局键盘钩子
- 鼠标键盘钩子(HOOK)
- c# 钩子(hook)键盘
- 键盘钩子 HOOK
- VC HOOK 键盘钩子 注意事项
- HOOK使用:全局键盘钩子
- HOOK使用:全局键盘钩子
- 全局钩子(hook鼠标键盘消息)
- CE 6 下键盘钩子(HOOK)
- HOOK技术--键盘鼠标钩子实例
- C# HOOK钩子屏蔽键盘代码
- Windows Hook钩子机制及键盘钩子实例(转)
- 钩子编程(HOOK) 安装进程内键盘钩子
- C#之键盘钩子
- 用键盘全局钩子[Hook]监视多进程键盘操作
- 鼠标键盘钩子HOOK------->全局钩子(所有桌面软件都能响应此钩子)
- C#.Net的全局键盘钩子(Hook)技术
- (2011.07.16-2011.07.21)六天的学习小记
- org.hibernate.InvalidMappingException: Could not parse mapping document from resource 处理办法
- POJ1001 Exponentiation 高精度乘法
- [Linux] static library & dynamic library
- 数据结构之线性结构(单链表)【二】
- Winodws HOOK 之键盘钩子
- 如何调用Sphinx 和api接口
- Invalid file name: must contain only [a-z0-9_.]
- Tomcat+Hudson+Maven配置一览
- RMQ区间最值问题
- 帧与场
- 我们应该怎样看待“BUG”
- LCA与RMQ的相互转换
- 四、Hadoop+HBase+ZooKeeper三者关系图