C
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