关于LRESULT CALLBACK KeyboardProc的问题求教
答案:1 悬赏:70 手机版
解决时间 2021-03-17 11:37
- 提问者网友:姑娘长的好罪过
- 2021-03-16 17:35
关于LRESULT CALLBACK KeyboardProc的问题求教
最佳答案
- 五星知识达人网友:归鹤鸣
- 2021-03-16 19:14
KeyboardProc 键盘钩子处理函数: 首先键盘钩子处理函数的函数名是可以自定义的 ,例如:MyKeyboardProc() 函数原型: LRESULT CALLBACK KeyboardProc( int code, WPARAM wParam, LPARAM lParam ); 参数: code: 根据这个数值决定怎样处理消息 如果code 小于0,则 必须让KeyboardProc()函数返回CallNextHookEx() code可以是下列值: HC_ACTION:wParam和lParam包含按键消息 HC_NOREMOVE:wParam和lParam包含按键消息,并且按键消息不能从消息队列中移除(一个被PeekMessage函数调用的请求,指定 PM_NOREMOVE标志) wParam: 按键的虚拟键值消息,例如:VK_F1 lParam: 32位内存,内容描述包括:指定扩展键值,扫描码,上下文,重复次数。 0-15位: 描述:按下键盘次数。 16-23位 指定扫描码. 依赖于OEM 24位 当24位为1时候:表示按键是扩展键 当24位为0时候:表示按键是是数字键盘按键 25-28位 保留位 29位 上下文键:为1时: ALT按下,其他情况为0 30位 如果是按键按下后发送的消息,30位为1,如果是按键抬起后30位为1; 31位 指定转变状态:31位为0时候,按键正在被按下,为1时候,按键正在被释放 返回值: 如果参数1:code小于0,则必须 返回CallNextHookEx(),也就是返回CallNextHookEx()的返回值 如果参数1:code大于等于0,并且钩子处理函数没有处理消息,强烈建议您 返回CallNextHookEx()的返回值,否则当您安装WH_KEYBOARD钩子时 ,钩子将不会得到通知,并返回错误结果。 如果钩子处理的消息,您可以返回一个非0值,防止系统把消息传递给钩子链中的下一个钩子,或者把消息发送到目标窗口。 备注: 安装键盘钩子需要把WH_KEYBOARD作为SetWindowsHookEx()的第一个参数,并且把键盘钩子处理函数的函数指针作为SetWindowsHookEx()的第2 个参数. 需求: 头文件:Declared in Winuser.h, include Windows.h 导入库:无 最小系统需求:Windows 95, Windows NT 3.1 相关: Hooks Overview, CallNextHookEx, GetMessage, PeekMessage, SetWindowsHookEx, WM_KEYUP, WM_KEYDOWN 附赠例子: //屏蔽所有键盘输入 //DLL项目中代码 //DLL.cpp #include LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam) { return 1; } _declspec(dllexport) void SetHook() { SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,::GetModuleHandle(TEXT("DLL.dll")),0); } 调用端代码: _declspec(dllimport) void SetHook(); SetHook();
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯