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 Tastendruck bemerken (https://www.delphipraxis.net/124272-tastendruck-bemerken.html)

Yoda2003 17. Nov 2008 20:48


Tastendruck bemerken
 
Hallo,

ich habe vor, bzw. ist es sogar schon gelungen, einen Trainer für Spiele zu erstellen.
Das aber nur nebenbei.

Mein einziges Problem besteht eigetnlich nur noch darin, dass dieser "Trainer" im Hintergrund laufen soll und erst auf Tastendruck (z.B. nach dem Drücken der Taste F1) eine bestimmte Funktion ausführen soll.

Das Problem ist, dass das Programm nicht immer im Vordergrund läuft.

Wie bekomm ich das hin?

Eine Möglichkeit sind ja bekanntlich Hooks. Aber dazu bräuchte ich ja immer eine dll-Datei und schaut man sich mal andere Trainer an, so bestehen die auch nur aus einer einzigen exe Datei.

Also wenn ihr einen Vorschlag habt, vielleicht sogar ein Codebeispiel wäre ich euch sehr dankbar.

mfg
Yoda2003

turboPASCAL 17. Nov 2008 20:53

Re: Tastendruck bemerken
 
Ist ein Crosspost gelle !?

toms 17. Nov 2008 20:54

Re: Tastendruck bemerken
 
Hallo

Schau dir die Hier im Forum suchenRegisterHotkey() Funktion an.

SirThornberry 17. Nov 2008 21:09

Re: Tastendruck bemerken
 
Wenn du bei Tastendrücken benachrichtigt werden willst sind Messages, Hotkeys und Hooks das richtige. Aber man kann auch abfragen ob eine Taste gedrückt ist oder nicht mit GetKeySate und GetAssyncKeyState

Yoda2003 17. Nov 2008 21:12

Re: Tastendruck bemerken
 
Habs mit nem Timer und
if GetAsyncKeystate(VK_F1) <> 0 then
realisiert bekommen.

Vielen Dank für die Hilfe.

mfg
Yoda2003

Cyberstorm 17. Nov 2008 22:17

Re: Tastendruck bemerken
 
würde register hotkey nahelegen:

mit dem timer ist das meiner meinung nach unsauber, weil du 1. keine wirkliche garantie dafür hast, ob dein hotkey :P gedrückt wurde und 2. es auch nicht gerade schöne ist jede millisekunde einen aufruf zu starten. und mehr code ist es auch nicht wirklich:
Delphi-Quellcode:
//bei frmMain --> private mit rein:

  private
    procedure WMHotKeyRecieved(var Msg:TWMHOTKEY); message WM_HOTKEY;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  RegisterHotKey(Handle, 666, 0, VK_F1);
end;

procedure TfrmMain.WMHotKeyRecieved;
begin
  Showmessage('F1 gedrückt');
end;

Yoda2003 18. Nov 2008 19:26

Re: Tastendruck bemerken
 
Danke Cyberstorm,
das ist natürlich eine viel elegantere Lösung und habe die sofort übernommen.
Klappt nun alles 1a ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 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