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