我用低级钩子,也钩不到,在 PreTranslateMessage 中也没有消息激活...怎么回事判断过程是,判断按下键是不是  VK_RETURN 如果是 就判断alt有没有按下

解决方案 »

  1.   

    void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
    if(nChar == VK_RETURN && (nFlag & KF_ALTDOWN))
    {
    ...
    }
    }
    这样可以不
      

  2.   

    解决了,alt 按下是 wm_syskeydown只是很郁闷,为什么在wm_keydown中,检测到回车按下了,但是用 GetAsyncKeyState(VK_MENU)&0x8000 结果为 0
      

  3.   

    先按回车,后按alt,估计已经处理完wm_keydown了。
    GetAsyncKeyState是实时状态。
      

  4.   


    晕倒 , ctrl alt shift 这些键和别的键组合,都是先按这些键噻,如果先按enter再按alt,这是错误的按键顺序,不是alt+enter 组合键
      

  5.   

    奇怪了,如果先ALT再enter根本进不去keydown
      

  6.   

    9楼,你终于发现了问题了哇10楼,我拦的是组合按键,不是加速键只是很郁闷,为什么在wm_keydown中,检测到回车按下了,但是用 GetAsyncKeyState(VK_MENU)&0x8000 结果为 0我现在的实现是 在wm_syskeydown 用 GetAsyncKeyState(VK_RETURN)&0x8000 这个判断这个组合键
      

  7.   

    A nonsystem key is a key that is pressed when the ALT key is not pressed. 
    你自己不是说了答案么?这个是syskeydown消息。那当然alt按的时候不进keydown。
    那怎么检测VK_MENU的状态?
    我以前检测过ctrl组合键可以
      

  8.   

    不是syskeydown那响应到keydown了,即先按return后按alt?
      

  9.   

    if(WM_SYSKEYDOWN==pMsg->message)
    {
    if(VK_MENU==pMsg->wParam)
    m_bIsALTPress=TRUE; //因为VK_RETURN按下,程序也有行为,所以这个是防止那个有行为
    TRACE(L"Run here!\n");
    if(m_bIsALTPress && GetAsyncKeyState(VK_RETURN)&0x8000)
    {