2010-03-22 46 views
2

我試圖壓制任務切換鍵(如WINKEYALT +標籤ALT + ESCCTRL + ESC等)通過使用低級別的鍵盤鉤。禁止任務切換鍵(WINKEY,ALT標籤,ALT-ESC,CTRL-ESC)使用低級別的鍵盤鉤子

我使用以下LowLevelKeyboardProc回調:

IntPtr HookCallback(int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam) 
{ 
    if (nCode >= 0) 
    { 
      bool suppress = false; 

      // Suppress left and right windows keys. 
      if (lParam.Key == VK_LWIN || lParam.Key == VK_RWIN) 
       suppress = true; 

      // Suppress alt-tab. 
      if (lParam.Key == VK_TAB && HasAltModifier(lParam.Flags)) 
       suppress = true; 

      // Suppress alt-escape. 
      if (lParam.Key == VK_ESCAPE && HasAltModifier(lParam.Flags)) 
       suppress = true; 

      // Suppress ctrl-escape. 
      /* How do I hook CTRL-ESCAPE ? */ 

      // Suppress keys by returning 1. 
      if (suppress) 
       return new IntPtr(1); 
    } 
    return CallNextHookEx(HookID, nCode, wParam, ref lParam); 
} 

bool HasAltModifier(int flags) 
{ 
    return (flags & 0x20) == 0x20; 
} 

不過,我在茫然,如何抑制CTRL + ESC 組合。 有什麼建議嗎?謝謝。

回答

1

這應該做的伎倆:

bool ControlDown = (GetKeyState(VK_CONTROL) & 0x8000) != 0; 
if (lParam.Key == VK_ESCAPE && ControlDown) 
    suppress = true;