WINAPI WinMain Code in CTestApp::InitInstance() umbauen



  • Hi,

    ich möchte folgenden WinApi Code im meine MFC (Dialog) Anwendung einbauen,
    aber es klappt nicht.

    #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;
    
    		 // Alt+Tab
             if((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0))
    		 {
    			 fEatKeystroke = TRUE;
    			 break;
    		 }
    
    		 // Alt+Esc
    		 if((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0))
    		 {
    			fEatKeystroke = TRUE;
    			break;
    		 }
    
    		 // Alt+Esc
    		 if(p->vkCode == VK_ESCAPE)
    		 {
    			fEatKeystroke = TRUE;
    			break;
    		 }
    		 // Ctrl+Esc
    		 if((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0))
    		 {
    			 fEatKeystroke = TRUE;
    			 break;
    		 }
    
    		 // win key 
    		 if( (p->vkCode == VK_LWIN) || (p->vkCode == VK_RWIN) )
    		 {
    			 fEatKeystroke = TRUE;
    			 break;  
    		 }
    
             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, "Win, Alt+Esc, Ctrl+Esc, and Alt+Tab are now disabled",
    	   "Disable Low-Level Keys", MB_OK);
    
       UnhookWindowsHookEx(hhkLowLevelKybd);
    
       return(0);
    }
    

    Da der Code die WINAPI WinMain nutzt und ich in meiner App Klasse ja die

    BOOL CTestApp::InitInstance()
    

    habe weis ich nicht so richtig wie ich den Code in meiner App Klasse einbaue.

    Ich wäre für jeden Tipp wirklich dankbar.

    cu asmodia


Anmelden zum Antworten