请问一下,关于钩子函数

puhuofeie 2003-11-23 10:55:38
我用全局钩子可以监控键盘输入,但是怎样不让系统处理这个消息,,
就是使消息强制结束,用来屏蔽一些键!!
那位大侠指点一下,?
另外,可否讲一下 GetMessage(nCode ,wPram,lParam)得具体用法,,
是不是在什么头文件里面包含!!???
还有参数怎么使用!!!


多谢了!!
...全文
40 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
酒红绿叶 2003-11-24
  • 打赏
  • 举报
回复
解决问题就送分,
在线等!!!
酒红绿叶 2003-11-24
  • 打赏
  • 举报
回复
谢谢楼上,,
最后,,还有两个问题没有解决!!
1. 我上面的程序为什么不能结束钩子!
2.用钩子的 return 1;屏蔽不料系统键 Alt Shift Delete Win Tab等等
这些系统键,即使我return 1;系统也对它们进行了处理!!


希望大家帮我!!


酒红绿叶 2003-11-23
  • 打赏
  • 举报
回复
不行啊??当我按F1时,,却调用了,系统得帮助,
中午回去试一试!!
谢谢!!
feeboby 2003-11-23
  • 打赏
  • 举报
回复
可以
unicode 2003-11-23
  • 打赏
  • 举报
回复
一样啊
酒红绿叶 2003-11-23
  • 打赏
  • 举报
回复
我是指对于系统键,,,Alt ,,Shift 等等,,
是我没说清楚!!!

怎样改对应得键值
if( wParam == VK_F1 )
{
wParam = VK_F4;

}

这样可以么??????????
谢谢
theone 2003-11-23
  • 打赏
  • 举报
回复
直接return 1;就可以了
broadoceans 2003-11-23
  • 打赏
  • 举报
回复
wParam是鼠标消息的标志,如WM_MOUSEMOVE 等;
lParam与 wParam有关,可分别查看WM_MOUSEMOVE
酒红绿叶 2003-11-23
  • 打赏
  • 举报
回复
yes 但是 lParam,wParam的各个参数的意义是什么,
具体的值是什么,,
象keyboard 的wParam 虚拟键值VK_F4等等!!!
broadoceans 2003-11-23
  • 打赏
  • 举报
回复
可以查看MSDN
nCode
Specifies a code the hook procedure uses to determine how to process the message. This parameter can be one of the following values: Value Meaning
HC_ACTION The wParam and lParam parameters contain information about a mouse message.
HC_NOREMOVE The wParam and lParam parameters contain information about a mouse message, and the mouse message has not been removed from the message queue. (An application called the PeekMessage function, specifying the PM_NOREMOVE flag.)


If nCode is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx.

wParam
Specifies the identifier of the mouse message.
lParam
Pointer to a MOUSEHOOKSTRUCT structure.
酒红绿叶 2003-11-23
  • 打赏
  • 举报
回复
我用的是WH_KEYBOARD参数,,
if(!(hhk=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyProc,hInst,0)))
{ //安装钩子
return FALSE;
}

LRESULT KeyProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if( wParam == VK_F12 )
{

UnhookWindowsHookEx(hhk);
}
return 1;//也就是屏蔽一切非系统键,,当按F12时解锁,,,但是不行,不知道为什么
//UnhookWindowsHookEx(hhk);无效,,????????????????????????

} //这些都是在DLL文件里得!!!!!!!!


怎样通过键盘来结束主程序,,,,,,
另外,,,对于鼠标得WH_MOUSE消息,,对应的函数

LRESULT MouseProc(int nCode,WPARAM wParam,LPARAM lParam)
中得参数都是什么意思!!!!???


感谢楼上几位,,,!!!
broadoceans 2003-11-23
  • 打赏
  • 举报
回复
注意:你的程序必须用动态链接库做,否则不行
broadoceans 2003-11-23
  • 打赏
  • 举报
回复
对于你想屏蔽的键,直接return;而其他键,调用钩子链的下一个钩子
lovenoend 2003-11-23
  • 打赏
  • 举报
回复
直接改值好象不成,比如,在OnChar改值就不行,它们应该一样道理

看WINDOWS核心编程,里面说的很详细,有线程状态什么的

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧