按ctrl+f+k三键有效,其他键无效,是否是这么写?LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
    EVENTMSG* pev=(EVENTMSG* )lParam;
    if( (nCode>=0) && (pev->message==WM_KEYDOWN))
    {
        KeyStates=GetKeyState(VK_CONTROL);
        if( (KeyStates < 0) &&
            ((((char)(pev->paramL) == 70) && ((char)(pev->paramH) == 75)) ||
            (((char)(pev->paramH) == 70) && ((char)(pev->paramL) == 75)))
        ){
            PostMessage(hWndMain,HOOKAPI_FIRSTCOMMAND,(char)(-1),HOOKAPI_SECONDPARAM);
        }
        else
            return 1;
    }
    return((int)CallNextHookEx(hLogHook,nCode,wParam,lParam));
}

解决方案 »

  1.   

    KeyStates=GetKeyState(VK_CONTROL);
    你看看msdn,好象这个有问题
      

  2.   

    if(wParam == 70 && GetKeyState(75)&0x80 && GetKeyState(VK_CONTROL)&0x80)这样写,不过这样要求先按住ctrl和k键不放,再按f键。就像ctrl + alt + del一样,也要先按住ctrl和alt键再按del键才有效。
      

  3.   

    用GetKeyState(VK_CONTROL)&0x80&&GetKeyState('F'))&0x80来判断是否已经按了Alt+F
      

  4.   

    设置一个flag=0,如果按了这3个键,flag=1;,钩子函数每次处理时先看flag状态,是0就return 1;是1就return((int)CallNextHookEx(hLogHook,nCode,wParam,lParam));