About windows Hook!

hustdaiwei 2006-09-01 11:54:55
比如说安装了一个类型的Hook,当某个事件发生时,调用的Hook例程,然后系统还会把这个消息发送给默认的窗口处理程序吗?举个例子,我安装了一个鼠标监测的Hook,在Hook例程处理完之后,窗口默认处理程序还会处理这消息吗?
...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfh00l 2006-09-02
  • 打赏
  • 举报
回复
想D变A,看你再什么消息里做了,在WM_CHAR里做应该可以的,不过我没有做过,你自己试一下,WM_KEYUP和WM_KEYDOWN里应该不可以
dfh00l 2006-09-01
  • 打赏
  • 举报
回复
看hook里返回TRUE还是FALSE 前者不继续传递,后者会
hustdaiwei 2006-09-01
  • 打赏
  • 举报
回复
另外,如果有一个键盘监控的钩子,如果我输入一个d,然后钩子例程截获到,我将虚拟键码改为a的虚拟键码,然后传给默认窗口处理程序,这时会显示a吗?也就是说可以改变消息吗?
nicky_hk 2006-09-01
  • 打赏
  • 举报
回复
在钩子子程中调用得到控制权的钩子函数在完成对消息的处理后,如果想要该消息继续传递,那么它必须调用另外一个SDK中的API函数CallNextHookEx来传递它,
LRESULT CallNextHookEx(HHOOK hhk;int nCode;WPARAM wParam;LPARAM lParam;);
hhk为当前钩子的句柄,由SetWindowsHookEx()函数返回。
NCode为传给钩子过程的事件代码。
wParam和lParam 分别是传给钩子子程的wParam值,其具体含义与钩子类型有关。
钩子函数也可以通过直接返回TRUE来丢弃该消息,并阻止该消息的传递。否则的话,其他安装了钩子的应用程序将不会接收到钩子的通知而且还有可能产生不正确的结果。

dfh00l 2006-09-01
  • 打赏
  • 举报
回复
一个消息只要有一个处理过程返回的是TRUE就该消息从消息对列中移出,如果消息经过HOOK了,返回TRUE 就不会系统的默认窗口处理程序

默认处理程序是最后一行 return defwinpro();如果在前面return 了当然是不会再处理了
hustdaiwei 2006-09-01
  • 打赏
  • 举报
回复
MSDN上说是不传给下一个Hook,那么会不会传给系统的默认窗口处理程序呢?

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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