LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if (wParam ==VK_LWIN || wParam ==VK_RWIN)
{
return 1; // 吃掉消息
}
return CallNextHookEx(hkb, nCode, wParam, lParam);
}
HHOOK installHook()
{
//底层钩子 low level hook
hkb =SetWindowsHookEx(WH_KEYBOARD/*WH_KEYBOARD_LL*/,(HOOKPROC)LowLevelKeyboardProc,(HINSTANCE)_AtlBaseModule.GetModuleInstance(),GetCurrentThreadId());
return hkb;
}
BOOL uninstallHook(HHOOK hkb)
{
BOOL ret = false;
if (hkb)
{
UnhookWindowsHookEx(hkb);
}
return ret;
}先上代码,如果用WH_KEYBOARD,按下win键,可以进断点return 1,但是win键还是弹出来了。没有屏蔽的效果。这样写的话应该算是thread级别的钩子吧~
求大神指点~
{
if (wParam ==VK_LWIN || wParam ==VK_RWIN)
{
return 1; // 吃掉消息
}
return CallNextHookEx(hkb, nCode, wParam, lParam);
}
HHOOK installHook()
{
//底层钩子 low level hook
hkb =SetWindowsHookEx(WH_KEYBOARD/*WH_KEYBOARD_LL*/,(HOOKPROC)LowLevelKeyboardProc,(HINSTANCE)_AtlBaseModule.GetModuleInstance(),GetCurrentThreadId());
return hkb;
}
BOOL uninstallHook(HHOOK hkb)
{
BOOL ret = false;
if (hkb)
{
UnhookWindowsHookEx(hkb);
}
return ret;
}先上代码,如果用WH_KEYBOARD,按下win键,可以进断点return 1,但是win键还是弹出来了。没有屏蔽的效果。这样写的话应该算是thread级别的钩子吧~
求大神指点~
解决方案 »
- 关于CEdit创建后被覆盖的问题
- 加载DLL问题,如何让一个现在的EXE加载我的DLL?(不好意思,只有10分了)
- 【求助】MFC编程问题
- 请教:如何在客户区内限制绘图区域?
- 关于 *.dsp 的问题,请指教!谢谢!在线等!
- 包含<fstream>与<fstream.h>执行结果不一样,纳闷!谁能告诉我原因?
- 简单问题?
- 各位程序员,你们所掌握的第一门语言是什么呢?关于这个问题谈一谈好么?如谈的精彩还在此贴子继续加分,出色的送高分给他……
- 鼠标离开时是灰色, 指到时是彩色的工具条怎么做?
- 一个简单的问题,送分的,高手请进!
- 连不上服务器,抓包就抓到2个字节
- 在写入表中数据时选择是用insert into 还是用update时的问题
你截获了KeyDown事件是没用的,需要在Key_Up里面处理。钩子这样处理就可以了:LRESULT CALLBACK KeyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT* pHook = (KBDLLHOOKSTRUCT*)lParam;
if(nCode >= HC_ACTION)
{
if (WM_KEYUP == wParam)
{
switch(pHook->vkCode)
{
case VK_LWIN:
case VK_RWIN:
return 1;
break;
}
}
} return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}