关于应用程序内部使用键盘钩子
写了一个程序,需要屏蔽掉键盘右边ctrl边上的鼠标右键按钮
很简单的几个函数
LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(wParam == VK_APPS)
{
return 1;
}
return CallNextHookEx(hhkHook,nCode,wParam,lParam);
}
void CExamApp::DisableKeyboard()
{
hhkHook = SetWindowsHookEx(WH_KEYBOARD,HookProc,hInstance,0);
}
void CExamApp::EnableKeyboard()
{
UnhookWindowsHookEx(hhkHook);
}
然后在InitInstance()中调用DisableKeyboard();
在窗口destroy的时候调用EnableKeyboard();
问题出在HookProc上,按了键盘上的那个鼠标右键按钮后,确实wParam的值是VK_APPS
如果在return 1之前加一个MessageBox是可以响应出来的
但是没效果,即使直接return 1;右键菜单还是出来了
我在想是否这个消息会直接由系统处理,而不是简单的传递给我的应用程序呢?
如果我在HookProc里屏蔽其他按钮,比如A、B、C、D什么的,都是可以做到的,但只有这个右键按钮无法屏蔽
是不是一定要在系统级别的才能HOOK掉呢?
如果这样的话,势必要用WH_KEYBOARD_LL这个来做了,但如果用这个的话,98的机器是不会支持的,这样的话,怎么解决这个问题呢?
哪位高人指点一下,谢谢