ALT+F4 unterdrücken



  • Hallo,
    ich möchte das mein Programm nicht mit ALT+F4 geschlossen werden kann.
    Wie geht das???

    Danke



  • Hallo,

    OnKeyDown der Form auswerten und key auf 0 setzen und evtl. das Schliessen noch in OnCloseQuery verbieten.



  • Und wie mache ich das ganze genau???



  • OnKeyDown brauch man nicht zwingend, eine OnCloseQuery-Event reicht aus. Dort einfach CanClose auf false setzen und Spaß haben.



  • XMagic schrieb:

    OnKeyDown brauch man nicht zwingend, eine OnCloseQuery-Event reicht aus. Dort einfach CanClose auf false setzen und Spaß haben.

    Den hat man aber spätestens dann nicht, wenn man nur das Schließen per Tastatur verhindern will.



  • Hallo

    Ich sehe keinen Grund warum man Alt-F4 anders als andere Möglichkeiten zum Schließen eines Forms behandeln sollte.

    bis bald
    akari



  • Eine ganz andere Möglichkeit, die ich neulich irgendwo im Web gesehen hab (womöglich hier im Forum???). Quelle leider unbekannt:

    void __fastcall TMainForm::FormCreate(TObject *Sender)
    {
        HotKeyIdentifier_uint = GlobalAddAtom("Alt-Tab-Wegmachen");
        HotKeyModifier_uint = MOD_ALT;
        RegisterHotKey(Handle, HotKeyIdentifier_uint, HotKeyModifier_uint, VK_TAB); //Hotkey registrieren.
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::FormDestroy(TObject *Sender)
    {
        UnregisterHotKey(Handle, HotKeyIdentifier_uint); //HotKey löschen
        GlobalDeleteAtom(HotKeyIdentifier_uint);         //HotKey Identifier löschen
    }
    //--------------------------------------------------------------------------- 
    void __fastcall TMainForm::WMHotKey(TMessage &Msg) 
    { 
        TForm::Dispatch(&Msg); 
        //--TODO: Gewünschten Code einfügen 
    } 
    //---------------------------------------------------------------------------
    
    /* MessageMap, damit das Form auch weiss, wo die Message hin geschickt werden soll */ 
    BEGIN_MESSAGE_MAP 
    /* MESSAGE_HANDLER(<Nachrichtenname>, <Nachrichtentyp>, <Handler-Funktionssname> */ 
       MESSAGE_HANDLER(WM_HOTKEY, TMessage, WMHotKey) 
    END_MESSAGE_MAP(TForm)
    
    /* Eine eindeutige ID für den Hotkey suchen. Der String ist egal.             *
     * Sinnvollerweise beschreibend zum Hotkey. Diese ID wird auch benötigt, wenn *
     * man den Hotkey zerstören will. Daher sollte der Wert irgendwo in der Klasse*
     * welche den HotKey verwaltet gespeichert werden.                            */
    unsigned int HotKeyIdentifier_uint;
    
    /* Die Modifier sind die Tasten welche zusätzlich auch noch gedrückt werden   *
     * müssen. Also z.B. Control oder so. Hier ist es keine (0). Um genauere      *
     * Info zu erhalten musst du einfach in der Hilfe unter "RegisterHotKey" nach *
     * lesen. (Windows SDK Hilfe)                                                 */
    unsigned int HotKeyModifier_uint;
    
    /* Funktionsdeklaration des Message-Handlers */
    void __fastcall WMHotKey(TMessage &Msg);
    

    Achtung!! Genau hingucken, das Beispiel ist für Alt-Tab ... für Alt-F4 muß man eine klitzekleine Kleinigkeit ändern 😉


Anmelden zum Antworten