Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Tastendrücke abfangen und Tastendr. simulieren (für trainer) (https://www.delphipraxis.net/82063-tastendruecke-abfangen-und-tastendr-simulieren-fuer-trainer.html)

joel93 7. Dez 2006 14:21


Tastendrücke abfangen und Tastendr. simulieren (für trainer)
 
Bin mal wieder on und hab auch gleich ma ne frage( :wiejetzt: :coder2: ):
Ich möchte Einen Trainer für ein spiel machen weil ich ein paar mods bastele.
Dafür muss ich schonmal im spiel hin un her biemen (mit cheats).
Das geht dan z.B. so: [F2][g][w][s][F2]
Das soll der Trainer dann auf nen Tastendruck machen z.B. [F6]
Ich denke ihr habts verstanden.
:coder:

SirThornberry 7. Dez 2006 14:25

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
Und an welcher Stelle hängst du fest? Wie man Tastendrücke simuliert findet sich über die Suche und wie man Tasten abfängt (hook) findet sich auch über die Suche. Bei was von beidem kommst du nicht weiter?

inherited 7. Dez 2006 14:28

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
Such mal nach Delphi-Referenz durchsuchenkeybd_event

joel93 7. Dez 2006 14:31

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
hab sowass noch nie gemacht. verfüge eigentlich nur über grundwissen

SirThornberry 7. Dez 2006 14:33

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
Wenn du nach "Hook" und dem genannten Wort in der Hilfe oder dem Forum suchst wirst du fündig. Im Forum sogar mit Beispielen. Wenn du jedoch noch recht am Anfang stehst würde ich von sowas eher abragen und eher erstmal dazu raten Grundlagen zu lernen. Das ist nicht bösartig gemeint sondern hilft einem den Code auch zu verstehen den anderen auf diesem Gebiet anwenden.

joel93 7. Dez 2006 14:35

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
hab nix mit keybd_event gefunde hab D7

SirThornberry 7. Dez 2006 14:38

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
dies ist eine Systemfunktion welche im MSDN zu finden ist.

joel93 7. Dez 2006 15:20

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
hab gefunden wie ich was abfange wenn mein prog nicht im fokus is:
Delphi-Quellcode:
// Beispiel Alt + D

uses Windows;

if (GetAsyncKeyState(VK_MENU) < 0) and (GetAsyncKeyState(Ord(D)) < 0) then ;
wo muss ich das hinschreibe; hat ja keinen sinn wenn ich das per timer alle paar min mache :wink:

inherited 7. Dez 2006 16:48

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
Such mal im Forum nach keybd_event, da gibt es echt genügend Beispiele :roll:

joel93 8. Dez 2006 13:13

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
Meinte ja auch in Delphi!
Hab doch was gefunden(s.o.)!

joel93 8. Dez 2006 14:19

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
Ich hab da was komisches in der Delphi Help gefunden:

Zitat:

VCL-Referenz
Virtuelle Tastencodes

Siehe auch

Die virtuellen Tastencodes sind symbolische Entsprechungen von Tastatureingaben.

Unit

Windows

Beschreibung

Durch virtuelle Tastencodes können Tastenwerte für nicht-alphanumerische Tasten dargestellt werden. In Windows sind spezielle Konstanten für jede Taste definiert, die der Benutzer drücken kann. Über diese Konstanten kann dann in Windows-API-Aufrufen oder in den Ereignisbehandlungsroutinen für OnKeyUp und OnKeyDown auf die Tasten Bezug genommen werden.

Die meisten virtuellen Tastencodes sind in der Unit Windows definiert. Weitere Tastencodes sind in speziellen Windows-Wrappern (z. B. Unit imm) definiert. Verwenden Sie bei alphabetischen Tasten ord zusammen mit einem Großbuchstaben, wie beispielsweise ord( 'M' ).

Mit der Methode Ord kann ein virtueller Tastencode für einen alphanumerischen Wert erzeugt werden. Ord(‘7’) liefert beispielsweise den virtuellen Tastencode für die Ziffer 7.

Die folgende Tabelle führt die in der Unit Windows definierten Tastencodes auf:

Virtueller Tastencode Zugehörige Taste



VK_LBUTTON Linke Maustaste
VK_RBUTTON Rechte Maustaste
VK_CANCEL Strg+Untbr
VK_MBUTTON Mittlere Maustaste
VK_BACK Taste Rück
VK_TAB Taste Tab
VK_CLEAR Taste Clear
VK_RETURN Taste Return
VK_SHIFT Taste Umschalt
VK_CONTROL Taste Strg
VK_MENU Taste Alt
VK_PAUSE Taste Pause
VK_CAPITAL Taste CapsLock
VK_KANA Wird mit IME verwendet
VK_HANGUL Wird mit IME verwendet
VK_JUNJA Wird mit IME verwendet
VK_FINAL Wird mit IME verwendet
VK_HANJA Wird mit IME verwendet

VK_KANJI Wird mit IME verwendet
VK_CONVERT Wird mit IME verwendet
VK_NONCONVERT Wird mit IME verwendet
VK_ACCEPT Wird mit IME verwendet
VK_MODECHANGE Wird mit IME verwendet
VK_ESCAPE Taste Esc
VK_SPACE Leertaste
VK_PRIOR Taste Bild auf
VK_NEXT Taste Bild ab
VK_END Taste Ende
VK_HOME Taste Pos1
VK_LEFT Taste Links
VK_UP Taste Auf
VK_RIGHT Taste Rechts
VK_DOWN Taste Ab
VK_SELECT Auswahltaste
VK_PRINT Taste Druck (tastaturspezifisch)
VK_EXECUTE Ausführungstaste

VK_SNAPSHOT Taste Druck
VK_INSERT Taste Einfg
VK_DELETE Taste Entf
VK_HELP Taste Hilfe
VK_LWIN Linke Windows-Taste (Microsoft-Tastatur)
VK_RWIN Rechte Windows-Taste (Microsoft-Tastatur)
VK_APPS Anwendungstaste (Microsoft-Tastatur)
VK_NUMPAD0 Taste 0 (numerischer Tastaturblock)
VK_NUMPAD1 Taste 1 (numerischer Tastaturblock)
VK_NUMPAD2 Taste 2 (numerischer Tastaturblock)
VK_NUMPAD3 Taste 3 (numerischer Tastaturblock)
VK_NUMPAD4 Taste 4 (numerischer Tastaturblock)

VK_NUMPAD5 Taste 5 (numerischer Tastaturblock)
VK_NUMPAD6 Taste 6 (numerischer Tastaturblock)
VK_NUMPAD7 Taste 7 (numerischer Tastaturblock)
VK_NUMPAD8 Taste 8 (numerischer Tastaturblock)
VK_NUMPAD9 Taste 9 (numerischer Tastaturblock)
VK_MULTIPLY Taste Multiplizierien (numerischer Tastaturblock)
VK_ADD Taste Addieren (numerischer Tastaturblock)
VK_SEPARATOR Taste Num (numerischer Tastaturblock)
VK_SUBTRACT Taste Subtrahieren (numerischer Tastaturblock)
VK_DECIMAL Taste Komma (numerischer Tastaturblock)

VK_DIVIDE Taste Dividieren (numerischer Tastaturblock)
VK_F1 Taste F1
VK_F2 Taste F2
VK_F3 Taste F3
VK_F4 Taste F4
VK_F5 Taste F5
VK_F6 Taste F6
VK_F7 Taste F7
VK_F8 Taste F8
VK_F9 Taste F9
VK_F10 Taste F10
VK_F11 Taste F11
VK_F12 Taste F12
VK_F13 Taste F13
VK_F14 Taste F14
VK_F15 Taste F15
VK_F16 Taste F16
VK_F17 Taste F17
VK_F18 Taste F18
VK_F19 Taste F19
VK_F20 Taste F20
VK_F21 Taste F21
VK_F22 Taste F22
VK_F23 Taste F23
VK_F24 Taste F24

VK_NUMLOCK Taste NumLock
VK_SCROLL Taste ScrollLock
VK_LSHIFT Linke Umschalttaste (nur mit GetAsyncKeyState und GetKeyState)
VK_RSHIFT Rechte Umschalttaste (nur mit GetAsyncKeyState und GetKeyState)
VK_LCONTROL Linke Strg-Taste (nur mit GetAsyncKeyState und GetKeyState)
VK_RCONTROL Rechte Strg-Taste (nur mit GetAsyncKeyState und GetKeyState)
VK_LMENU Linke Alt-Taste (nur mit GetAsyncKeyState und GetKeyState)

VK_RMENU Rechte Alt-Taste (nur mit GetAsyncKeyState und GetKeyState)
VK_PROCESSKEY Taste Verarbeiten
VK_ATTN Taste Attn
VK_CRSEL Taste CrSel
VK_EXSEL Taste ExSel
VK_EREOF Taste EOF löschen
VK_PLAY Taste Wiedergabe
VK_ZOOM Taste Zoom
VK_NONAME Reserviert für künftige Verwendung
VK_PA1 Taste PA1
VK_OEM_CLEAR Taste Clear




Was mich stört ist:
VK_F13 Taste F13
VK_F14 Taste F14
VK_F15 Taste F15
VK_F16 Taste F16
VK_F17 Taste F17
VK_F18 Taste F18
VK_F19 Taste F19
VK_F20 Taste F20
VK_F21 Taste F21
VK_F22 Taste F22
VK_F23 Taste F23
VK_F24 Taste F24
Die Tasten kenne ich garnicht, sind sie in den Treibern integrierd und werden nicht benutz oder sind es MultimediaTasten???

Neutral General 8. Dez 2006 14:29

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
Naja die Tasten gibts.. theoretisch.. Nur gibts die halt nicht (selten?^^) auf ner Tastatur...

joel93 9. Dez 2006 08:00

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
Sorrry, aber irgebdwie hab ich das gefühl das das hier ins stocken gekommen ist!?! :gruebel:

Balu der Bär 9. Dez 2006 08:10

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
WAS ist dein Problem? :roll:

Diese Tasten sind optional und halt nicht auf jeder Tastatur vorhanden, ich weiß nicht was du von uns hören willst...

inherited 9. Dez 2006 14:12

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
immer noch keybd_event, immer noch keybd_event, immer noch keybd_event, und wen du noch 5 mal fragst, werd ich dir immer noch sagen keybd_event! :roll:

joel93 10. Dez 2006 09:04

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
@Balu meinte igentlich das Bsp. oben, mit dem code, da hatte ich noch ne frage! :dancer:

( :wiejetzt: :coder2: )

joel93 10. Dez 2006 10:32

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
Hab ein Problem: in anderen anwendungen als das spiel geht keybd_event (z.B. notepad) aber in dem spiel passiert nichts(Gothic II)!
Ich hab das mal mit nen Timer getestet (pro sek.):
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
  Keybd_Event(VK_UP,0,0,0);
  Keybd_Event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
end;

StefanG 11. Dez 2006 07:49

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
es gibt die Unit SNDKEY32.pas in der du die Funktion Sendkeys findest.

Für dein Beispiel würde der Aufruf dann glaub ich so aussehen :


Code:
SendKeys('{F2}gws{F2}',False);
Die Unit ist irgendwo auf der Delphi cd

joel93 13. Dez 2006 18:14

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
werd ich mal suchen;(hab im moment aber nich viel zeit für hobby; wegen Xmas, außerdem schreiben wir noch nen paar arbeiten!) Danke im Voraus

Numinos 28. Mär 2007 23:55

Re: Tastendrücke abfangen und Tastendr. simulieren (für trai
 
ich hab das gleiche problem. mit keybd_event kann man ganz wunderbar keystrokes an den editor oder nen anderen windowsfenster schicken, aber es geht nicht bei komplexen oberflächen, wie z..b nem spiel, weiss aber nicht warum. und die sndkey32 basiert ja auch nur auf dem keybd_event befehl.

atm versuche ich mein glück indem ich versuche direkt in den inputpuffer zu schreiben mit:

buffer:input_record; <- da steht die taste drin
handle:HWND;

handle:=getforegroundwindow;
writeconsoleinput(handle,buffer,....);

ich kann zwar den handle identifizieren , komm aber nicht in den inputhandle rein, um vom inputbuffer lesen bzw schreiben zu können. hat da einer ne idee?

es gibt ja den befehl getstdhandle(STD_INPUT_HANDLE), um eben ganz speziell den inputhandle des eigenen programs zu öffnen. sowas muss es doch auch geben, um die inputbuffer anderer programme zu öffnen.


greets numi


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