HOOKPROC hookproc = (HOOKPROC)GetProcAddress(hmodHook, "KeyboardSpyProc");
ASSERT(hookproc != NULL);
g_hhkKbd = SetWindowsHookEx(WH_KEYBOARD_LL, hookproc, hmodHook, 0);回调中:LRESULT CALLBACK KeyboardSpyProc(int nCode, WPARAM wParam, LPARAM lParam)
{
//略....处理down时记录要拦截的按键code //对按键长按做拦截,如果上一个down下且没up,而且当前down的键值vkCode和之前down下的键值g_prevKey一样,则返回TRUE;
if ( g_prevKey == vkCode && !wALTDown && !wShiftDown )
return 1L;
if( 收到up事件 )
{
g_prevKey = 0;//重置记录上一个code的变量
return 1L;
}
return CallNextHookEx(NULL,nCode,wParam,lParam);
}
这样在快速多次按下我要拦截的那个键后,发现会进不到KeyboardSpyProc的回调。而且在xp和vista下没事,就win7会这样,不知道是为什么。
谢谢~
yes,一般情况下都是应该处理up,但是现在也要处理down,无奈之举