Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Länge eines Tastendrucks speichern und ausführen? (https://www.delphipraxis.net/100785-laenge-eines-tastendrucks-speichern-und-ausfuehren.html)

Relicted 3. Okt 2007 20:48


Länge eines Tastendrucks speichern und ausführen?
 
huhu!

ich such momentan nach ner möglichkeit die länge eines tastendrucks zu ermitteln - wie lang wird taste a gedrückt gehalten?

jemand eine ahnung wie man das realisieren kann?
ich brauch das ganze für eine art macro funktion. ich gehe mal davon aus um überhaupt sowas mitzubekommen muss ich nen globalen keyhook einbauen right?

freue mich wie immer auf eure antworten :-)

gruß
reli

sirius 3. Okt 2007 20:54

Re: Länge eines Tastendrucks speichern und ausführen?
 
Zitat:

muss ich nen globalen keyhook einbauen right?
Wenn du es global auf dem Rechner haben willst, dann ja.
du musst halt die Zeit zwischen drücken und loslassen stoppen. Das sind beides getrennte Nachrichten. Nach der ersten gedrückt-Meldung musst du alle weiteren Taste-gedrückt-Meldungen ignorieren.

Relicted 4. Okt 2007 06:52

Re: Länge eines Tastendrucks speichern und ausführen?
 
ich denke mal da werden x hundert messages aufschlagen oder? es gibt da ja bei windows die tolle einstellung was die tastengeschwindigkeit angibt. also quasi nur die erste WM_Keydown nehmen und dann die letzte WM_Keyup?!

gruß
reli

dominikkv 4. Okt 2007 07:37

Re: Länge eines Tastendrucks speichern und ausführen?
 
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!

Relicted 4. Okt 2007 07:41

Re: Länge eines Tastendrucks speichern und ausführen?
 
jup das is klar... daher ja auch die sache mit dem keyhook :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz