Tasten - Strg-Alt-Entf etc. deaktivieren



  • Hi, wie bekomme ich das hin,
    dass Windows für einen gewissen
    Zeitraum alle Tasteneingaben
    ignoriert also auch z.B. Strg+Alt+Enf /
    Alt+Tab / Alt+F4 / X / Y / usw.
    Wer hat so was schon mal gemacht?
    Beispielcode währe nicht schlecht.
    Danke.

    [ 17.08.2001: Beitrag editiert von: Jansen ]



  • // Strg-Alt-Entf und Alt-Tab deaktivieren:
    int ilRetVal = 0;
    SystemParametersInfo(SPI_SCREENSAVERRUNNING, true, &ilRetVal, NULL);

    // Strg-Alt-Entf und Alt-Tab wieder aktivieren:
    int ilRetVal = 0;
    SystemParametersInfo(SPI_SCREENSAVERRUNNING, false, &ilRetVal, NULL);

    ------------------
    /MicroForce Inc./
    hope we can help!



  • Cool, Toll, Spitze, Klasse.
    Danke hat funktioniert.



  • Diese Vorgehensweise geht aber nur unter Win95 bzw. Win98. Bei WinNT/2000/XP geht das nicht.

    Unter WinNT/2000/XP kann man die Ctrl-Alt-Del-Taste nicht abfangen.

    Wenn du möchtest kann ich hir einen Code posten, der unter Win95/Win98/WinNT/Win2k/WinXP die Tasten Alt-Tab, Ctrl-Esc und Alt+Esc abfängt.

    ------------------
    Happy Building
    wünscht
    Happy Builder
    Ein Besuch der sich lohnt: http://www.bcbarena.de

    Edit:
    BS-Liste um XP erweitert.



  • jo mach mal 🙂



  • // In der Header-Datei:
    
    class TMainForm : public TForm
    {
    __published:
    
    public:        // User declarations
        __fastcall TMainForm(TComponent* Owner);
        virtual __fastcall ~TMainForm();    // IDE-managed Components
    
    private:    // User declarations
        static HHOOK ghhookKB;
    
        static void __stdcall SetHook(void);
        static void __stdcall RemoveHook(void);
    
        static LRESULT CALLBACK CheckKey(int, WORD,LONG);
    
    };
    
    // In der CPP-Datei:
    
    HHOOK TMainForm::ghhookKB = NULL;
    
    //---------------------------------------------------------------------------
    __fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
    {
        SetHook();
    }
    //---------------------------------------------------------------------------
    
    __fastcall TMainForm::~TMainForm()
    {
        RemoveHook();
    }
    //---------------------------------------------------------------------------
    
    void __stdcall TMainForm::SetHook(void)
    {
        ghhookKB = SetWindowsHookEx(WH_KEYBOARD_LL, (int(__stdcall*)())CheckKey, HInstance, NULL);
    }
    //---------------------------------------------------------------------------
    
    void __stdcall TMainForm::RemoveHook(void)
    {
        UnhookWindowsHookEx(ghhookKB);
    }
    //---------------------------------------------------------------------------
    
    LRESULT CALLBACK TMainForm::CheckKey(int nCode, WORD wParam, LONG lParam)
    {
        bool bEatKeyStroke = false;
    
        if (nCode == HC_ACTION)
        {
            switch (wParam)
            {
                case WM_KEYDOWN:
                case WM_SYSKEYDOWN:
                case WM_KEYUP:
                case WM_SYSKEYUP:
    
                    PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
    
                    bEatKeyStroke =
                        ((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(bEatKeyStroke ? 1 : CallNextHookEx(ghhookKB, nCode, wParam, lParam));
    }
    

    Hook is cool 🕶
    Happy Builder


Anmelden zum Antworten