如题

解决方案 »

  1.   

    谢谢,但是我不知道如何设置拦截条件
    KBDLLHOOKSTRUCT *p=(KBDLLHOOKSTRUCT*)lParam;
    如要拦截WIN 可以p->vkCode == VK_RWIN
    但是WIN+U如何 写?
      

  2.   

    p->vkCode == (BYTE)'U'
    同时用GetKeyState 判断windows键是否按下去了。
      

  3.   

    这个键好像和别的不一样,我用楼上的方法可以屏蔽Win + 其他的键(其实只要屏蔽WIn键,那他的组合键就自动会屏蔽),但就是这个不行,怎么回事呀 ?
      

  4.   

    用SetWindowsHookEx(WH_KEYBOARD_LL,...)就可以了
    在勾子过程中,请用
    KBDLLHOOKSTRUCT* pVKCode = (KBDLLHOOKSTRUCT*)lParam ;
    DWORD dwVk = pVKCode->vkCode ;
    if(dwVk == VK_LWIN || dwVk == VK_RWIN)
    {
       return TRUE ;//如果按下Win键
    }
      

  5.   

    KBDLLHOOKSTRUCT* pVKCode = (KBDLLHOOKSTRUCT*)lParam ;
    DWORD dwVk = pVKCode->vkCode ;
    static BOOL bPressWin = FALSE ;
    if(bPressWin && dwVk == 'U')
    {
       return FALSE ;
    }
    if(dwVk == VK_LWIN || dwVk == VK_RWIN)
    {
      bPressWin = TRUE ;
    }
    else
    {
      bPressWin = FALSE ;
    }
    return ::CallNextHook(...);
      

  6.   

    这个热键是winlogon.exe进程注册的吧类似于ctrl+alt+del