Delphi-Quellcode:
var
TasteGedrueckt: Boolean;
ZeitVergangen: Cardinal;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if TasteGedrueckt then
exit;
ZeitVergangen := GetTickCount;
TasteGedrueckt := True;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
showmessage(Format('Die Taste wurde %f Sekunden gedrückt!', [(GetTickCount - ZeitVergangen) / 1000]));
TasteGedrueckt := False;
end;
Und dann halt noch KeyPreview auf deiner Form aktivieren damit die Ereignisse auch aufgerufen werden wenn mal eine andere Komponente auf der Form den Fokus hat.
Außerdem geht das nur wenn dein Programm grad (in Windows) aktiv ist, also den Fokus hat!