In meinen Programmen geht das schon. Allerdings nutze ich nicht WM_KEYDOWN via Message.
Voraussetzung ist die Einstellung bei "KeyPreview".
Beispiel:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
// ssShift Die Taste Umschalt wird gedrückt gehalten.
// ssAlt Die Taste Alt wird gedrückt gehalten.
// ssCtrl Die Taste Strg wird gedrückt gehalten.
// ssLeft Die linke Maustaste wird gedrückt gehalten.
// ssRight Die rechte Maustaste wird gedrückt gehalten.
// ssMiddle Die mittlere Maustaste wird gedrückt gehalten.
// ssDouble Es wurde mit der Maus doppelgeklickt.
begin
//if (key = VK_F1) or ((key = VK_F1) and (ssAlt IN Shift)) then {F1-taste - funktioniert nur, wenn Form1.KeyPreview:= true; }
//ShowInfoDialog(Form1);
if key = VK_ESCAPE then {ESC-taste - funktioniert nur, wenn Form1.KeyPreview:= true; }
Close;
end;
Wobei "KeyPreview:= true;" in FormCreate gesetzt werden kann.