为什么我的WH_CBT全局钩子无法勾到其他进程的消息

holymaple 2013-04-13 11:08:20
HHook g_cbtHook = NULL;

g_cbtHook = SetWindowsHookEx(WH_CBT, CBTProc, GetModuleHandleA("testdll"), 0);

LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
cout << nCode<<endl;
return CallNextHookEx(cbtHook, nCode, wParam, lParam);
}


g_cbtHook已经设为共享了。
请问一下为什么我的WH_CBT钩子无法勾到其他进程的消息?只能勾到自己进程的消息呢?
郁闷的是,我换成键盘或者是鼠标钩子,则能正常勾到其他进程的消息。
win7 32bit 64bit均测试过····
...全文
281 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jichanglin 2015-07-15
  • 打赏
  • 举报
回复
楼主,我也遇到挂全局WH_CBT钩子,但只响应本进程窗口事件消息,对系统其它应用,比如打开一个IE窗口等,无响应。 请问这个全局钩子要如何才起作用。 系统是windows8, dll和安装钩子的exe都是32位,系统64位。
Apq001 2013-11-18
  • 打赏
  • 举报
回复
楼主你好,我没写过C++程序的,但最近想用一个CBT全局钩子,通过它来保证"符合一定规则的可执行文件"在系统中只有一个进程运行. 我现在遇到的问题似乎跟你这个问题是一样的,CBT钩子有反应,但全是挂钩子这个程序窗口激活事件的回调,其它程序的一切事件均没有得到回调,到处找,从代码来看,应该也是全局钩子了(类似代码的鼠标键盘钩子均能正常),似乎楼主已找到原因和解决办法了,请不吝赐教,先谢过!
holymaple 2013-04-15
  • 打赏
  • 举报
回复
不是全局钩子不起作用,是我用cout << "result" <<endl;来查看结果 用Messagebox就能验证全局钩子起作用了。 迟些写个BLOG,在贴连接上来说明问题

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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