Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bei Tastendruck ... ausführen (https://www.delphipraxis.net/73450-bei-tastendruck-ausfuehren.html)

Tumm 18. Jul 2006 13:08


Bei Tastendruck ... ausführen
 
Hi

Ich suche nach einer Möglichkeit , Tastencodes wie eine if-Anweisung einzubauen. Ich stelle mir das ungefähr so vor, dass inerhalb eines Timers folgende if-Anweisung immer wieder weiderholt wird:
Delphi-Quellcode:
if vkleft.Pressed {*Oder so ähnlich*} = true then begin
//Ausführung
end;
Tumm

Muetze1 18. Jul 2006 13:10

Re: Bei Tastendruck ... ausführen
 
Mach es nicht auf einen Timer sondern eher auf den Tastendruck. Wozu den Timer?

Luckie 18. Jul 2006 13:10

Re: Bei Tastendruck ... ausführen
 
Guck dir mal die Ereignisse OnKeyDown und OnKeyPress an.

TBx 18. Jul 2006 13:25

Re: Bei Tastendruck ... ausführen
 
Hallo Tumm!

Was möchtest Du denn damit erreichen?

Hotkey in Deinem Programm?
--> siehe Luckies Beitrag

Systemhotkey, Windowsweit gültig?
--> Da bruchst Du einen Keyboardhook. Assarbads Hook-Tutorial

Hope it helps

onlinekater

DGL-luke 18. Jul 2006 13:33

Re: Bei Tastendruck ... ausführen
 
MSDN-Library durchsuchengetAsyncKeyState macht genau das was du suchst.

@onlinekater: wie overpowered hätten wirs denn gern? ;)

EDIT: wenns nicht in der abfrageschleife sondern event driven sein soll, ist natürlich OnKeyPress/OnKeyUp(OnKeyDown vorzuziehen.

_rEdoX 18. Jul 2006 13:39

Re: Bei Tastendruck ... ausführen
 
@luke wie "unschön" hätten wirs denn gern? :roll:

Hier im Forum suchenHotKey Ist die besser wahl.

TBx 18. Jul 2006 13:42

Re: Bei Tastendruck ... ausführen
 
Zitat:

Zitat von DGL-luke
MSDN-Library durchsuchengetAsyncKeyState macht genau das was du suchst.

schön, daß Du Dir da so sicher bist ...

Zitat:

Zitat von DGL-luke
@onlinekater: wie overpowered hätten wirs denn gern? ;)

Wieso overpowered? Es ist für mich nicht eindeutig klar, was TUMM nun genau vorhat.
Daher habe ich gefragt und die beiden mir augenscheinlichen Vorhaben kurz angesprochen.


Gruß

onlinekater

Tumm 18. Jul 2006 13:52

Re: Bei Tastendruck ... ausführen
 
Hi

Thx. Ich hab' mir das alles mal angeschaut... Was es da nicht alles gibt :roll:
Ich hab' ne Möglichkeit gefunden, mit
Delphi-Quellcode:
OnKeyPress
(Thx an Luckie).

Tumm

Luckie 18. Jul 2006 14:02

Re: Bei Tastendruck ... ausführen
 
Also für einen systemweiten Hotkey nimmt man MSDN-Library durchsuchenRegisterHotKey. Ein Hook wäre da wohl etwas fehl am Platz.

simlei 7. Sep 2006 16:53

Re: Bei Tastendruck ... ausführen
 
neulich wollte ich auch einen systemweiten Hotkey belegen, um eine bestimmte Funktion auszuführen, und das sollte auch wenn ich Battlefield 2 (und gerade da!) funktionieren... nur scheint Battlefield 2 leider Hotkeys zu blockieren, da es außerhalb von BF2 immer, aber wenn ich es spiele, nie funktioniert. Nun denke ich, dass ein Hook sicher das richtige wäre, um auch innerhalb des Spieles die Funktion im laufenden Program auszulösen. Hat jemand ein Stück Quelltext parat, dass diese Möglichkeit liefert? Ich hab selber schon viel gesucht, leider nichts gefunden :angel2:
Thx

3_of_8 7. Sep 2006 17:22

Re: Bei Tastendruck ... ausführen
 
Wenn du mich fragst, kann ein Programm nicht einfach Hotkeys blockieren, da die per WinAPI registriert werden. Und das sollte ein Programm wahrscheinlich auch nicht. Wenn du einen Trainer zum Cheaten programmieren willst, ist es wahrscheinlicher, dass der PunkBuster das blockiert, außerdem ist es auch alles andere als löblich.

Ansonsten: Timer & GetAsyncKeyState oder Keyhook.

simlei 7. Sep 2006 17:41

Re: Bei Tastendruck ... ausführen
 
Ok... Da vllt jeder denkt, ich will auf den Memory des Prozesses zugreifen mit Trainern/Cheatern (war auch nicht zu lücklich ausgedrückt) den will ich beruhigen -> ich will nur, dass der Prozess BF2 bei Drücken von F6 terminiert wird, und das hazt auch geklappt, aber nur wenn es minimiert ist... Es soll aber auch funktionieren, wenn es nicht minimiert ist.
KeyHook? ist das eine Funktion oder ein Begriff für eine Methode? und was trägt ein Timer in Verbindung mit GetAsyncKeyState zur Lösung bei? (obwohl ich ja denke, dass ein Hook da die beste Methode ist, da es mir spanisch vorkommt, mit einem Timer bei so etwas zu arbeiten). Wenn es geht, bitte Link/Code, Danke schonmal!

Christian Seehase 7. Sep 2006 17:44

Re: Bei Tastendruck ... ausführen
 
Moin simlei,

wolltest Du denn eine Tastenkombination belegen, die BF2 auch belegt?
Dann wäre es nämlich normal, dass es nicht funktioniert.
Wer sich die zuerst registriert gewinnt ;-)

Du könntest Dir ja schlicht und ergreifend mal ausgeben lassen, ob RegisterHotKey erfolgreich war.
Falls ja, würde das Spiel die Funkionalität tatsächlich irgendwie blockieren.

Helmi 7. Sep 2006 17:46

Re: Bei Tastendruck ... ausführen
 
*Mal diesen Link in den Thread werf*

simlei 7. Sep 2006 17:52

Re: Bei Tastendruck ... ausführen
 
@helmi: Das nutze ich zur Zeit :)
@Christian S.:RegisterHotKey IST erfolgreich gewesen, da es, wie gesagt, funktioniert, wenn BF2 minimiert ist und auch mit anderen Programmen (Firefox, Word, etc.). Und F6 ist im Spiel nicht belegt...

Axxus 5. Okt 2006 17:25

Re: Bei Tastendruck ... ausführen
 
Ups falscher thread

Axxus


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr.

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