读书人

怎么用全局钩子怎么拦截指定的菜单消

发布时间: 2012-03-26 15:46:55 作者: rapoo

如何用全局钩子,如何拦截指定的菜单消息?????
请教!
用全局钩子,如何拦截指定的菜单消息。
比如拦截右键-> 新建消息。
菜单拦截:我的DLL源码如下:

#include <windows.h>
HHOOK myHook;
LRESULT CALLBACK MENU_Process(int nCode, WPARAM wParam, LPARAM lParam)
{
CWPSTRUCT *p=(CWPSTRUCT *)lParam;
if(p-> message== WM_MENUSELECT)
{

}
return CallNextHookEx(myHook,nCode,wParam,lParam);
}

void MySetHook()
{

myHook=SetWindowsHookEx( WH_CALLWNDPROC, MENU_Process, GetModuleHandle( "MenuHook "), 0 );

}

[解决办法]
你应该拦截WM_COMMAND消息.
[解决办法]
帮你查了一下,你可以试试,我没测试过,不知道正确与否。
LRESULT CALLBACK MENU_Process(int nCode, WPARAM wParam, LPARAM lParam)
{
CWPSTRUCT *p=(CWPSTRUCT *)lParam;
if(p-> message== WM_COMMAND)
{
wmId = LOWORD(wParam);
switch (wmId)
{
case ID号:
break;
}

}
return CallNextHookEx(myHook,nCode,wParam,lParam);
}

[解决办法]
菜单消息是WM_COMMAND,再用wParam来确定是哪个菜单项
[解决办法]
第一个菜单项ID为0,下面依次递增1
[解决办法]
菜单就好比楼层,
从左到右,0,1,2
从上到下,0
1
2

读书人网 >VC/MFC

热点推荐