如题

解决方案 »

  1.   

    用WH_KEYBOARD,
    WH_GETMESSAGE好像无法屏蔽
      

  2.   

    /******************************************************************************
    Module:  DisableLowLevelKeys.cpp
    Notices: Written 2000 Jeffrey Richter
    ******************************************************************************/
    #define _WIN32_WINNT 0x0400
    #include <Windows.h>
    ///////////////////////////////////////////////////////////////////////////////
    LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
       BOOL fEatKeystroke = FALSE;   if (nCode == HC_ACTION)
       {
          switch (wParam) 
      {
          case WM_KEYDOWN:  
      case WM_SYSKEYDOWN:
          case WM_KEYUP:    
      case WM_SYSKEYUP: 
             PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
             fEatKeystroke = 
                ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) ||
                ((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0)) ||
                ((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0));
             break;
          }
       }
       return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
    }
    ///////////////////////////////////////////////////////////////////////////////
    int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) 
    {
       // Install the low-level keyboard & mouse hooks
       HHOOK hhkLowLevelKybd  = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hinstExe, 0);   // Keep this app running until we're told to stop
       MessageBox(NULL, 
          TEXT("Alt+Esc, Ctrl+Esc, and Alt+Tab are now disabled.\n")
          TEXT("Click \"Ok\" to terminate this application and re-enable these keys."),
          TEXT("Disable Low-Level Keys"), MB_OK);
       UnhookWindowsHookEx(hhkLowLevelKybd);   return(0);
    }看看有帮助吗?