如何用全局钩子,如何拦截指定的菜单消息?????
请教!
用全局钩子,如何拦截指定的菜单消息。
比如拦截右键-> 新建消息。
菜单拦截:我的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