请教关于通过HOOK,获取菜单点击事件的方法

Lings 2009-11-03 10:25:52
各位大侠!

我写了一个MouseHook,但是不能截获住菜单的点击信息(资源管理器的菜单、标准Window的菜单、OFFICE的菜单等),请问我要如何做呢?

...全文
292 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lings 2009-11-06
  • 打赏
  • 举报
回复
谢谢大家的热心回复,我已经通过WH_GETMESSAGE、WH_CALLWNDPROC两个钩子,钩取WM_COMMAND、WM_SYSCOMMAND、WM_MENUSELECT可以成功获取大部分的菜单点击信息,但是

[Quote=引用 5 楼 zy1691 的回复:]
[/Quote]

现在还有一个问题,右键菜单(比如在桌面点右键,然后选择“刷新”;在文件上点右键,然后选择“复制”),我到现在还不知道,点击“刷新”、“复制”之后,操作系统向哪个窗口,发送了什么消息??

请各位大侠帮忙啊!
Lings 2009-11-06
  • 打赏
  • 举报
回复
up!!!
kxalpah 2009-11-04
  • 打赏
  • 举报
回复
WM_COMMAND
zy1691 2009-11-04
  • 打赏
  • 举报
回复
大概像这样,安装WH_GETMESSAGE钩子,然后在你自己的函数里处理WM_COMMAND。


SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc, g_hInstance,dwThreadId);


static LRESULT WINAPI GetMsgProc(int code, WPARAM wParam, LPARAM lParam) {

MSG msg = *(MSG*)lParam;
if(nCode >= 0)
{
switch(msg.message)
{
case WM_COMMAND:
wmId = LOWORD(msg.wParam);
wmEvent = HIWORD(msg.wParam);
switch (wmId)
{
case IDM_ABORT://在这边处理,具体数值自己用spy观察吧

break;
default:
break;
}
}
}
return(CallNextHookEx(g_hhook, code, wParam, lParam));
}


大概应该就是这样了,具体代码你就自己写吧,如果成功请告诉我,呵呵!
cnzdgs 2009-11-04
  • 打赏
  • 举报
回复
WH_MOUSE_LL
dirdirdir3 2009-11-03
  • 打赏
  • 举报
回复
菜单信息不是鼠标的消息,应该hook消息......
fishion 2009-11-03
  • 打赏
  • 举报
回复
菜单消息就是WM_COMMAND消息了
  • 打赏
  • 举报
回复
消息钩子吧
WM_COMMAND

15,473

社区成员

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

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