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 Keybd_event funktioniert nicht? (https://www.delphipraxis.net/166382-keybd_event-funktioniert-nicht.html)

CuddlyBunny 10. Feb 2012 16:29

Keybd_event funktioniert nicht?
 
Hi. Ich hab was für 'n Spiel programmiert, das mir dann mit 'n paar Timern sagt, wann bestimmte Einheiten respawnen.
Jedenfalls will ich das dann auch in den Chat schreiben lassen für mein Team. Das schreiben funktioniert auch eigentlich so wie es soll (wenn ich z.B. im Editor bin, und das Event triggert, das die Wörter schreiben lässt, werden die Sätze in den Editor geschrieben). Wenn ich allerdings im Spiel bin, funktioniert es nicht. Das Programm mit seinen Ursprungsfunktionen klappt super wenn ich im Spiel bin, nur wird eben nichts geschrieben.

Ich hab Delphi nur in der Schule gelernt, daher bin ich nicht wirklich gut. Ich hoffe ihr könnt mir sagen was ich machen muss / was ich eventuell vergessen habe.
Hier ist ein bisschen Beispielcode:

Code:
procedure TForm1.Type_Blue;
begin
// blue //
keybd_event(66, 0, 0, 0);
keybd_event(76, 0, 0, 0);
keybd_event(85, 0, 0, 0);
keybd_event(69, 0, 0, 0);
keybd_event(32, 0, 0, 0);
end;
Code:
procedure TForm1.TmYBLUETimer(Sender: TObject);
begin
if YBD <> 0 then
  begin
  YBD := YBD -1;
end;

if YBD = 30 then
  begin
    if AutoVoice = 'TRUE' then sndPlaySound('sound\your-blue-30.wav', SND_ASYNC);
    if AutoSend = 'TRUE' then Type_Blue;
  end;
end;

DeddyH 10. Feb 2012 16:49

AW: Keybd_event funktioniert nicht?
 
Du lässt die Tasten ja nicht wieder los, sondern drückst sie nur. Vielleicht hilft Dir der Code aus der Code-Library weiter: EnterText

P.S.: Willkommen in der DP :dp:

p80286 10. Feb 2012 16:54

AW: Keybd_event funktioniert nicht?
 
Zitat:

Zitat von CuddlyBunny (Beitrag 1150353)
Hi. Ich hab was für 'n Spiel programmiert, das mir dann mit 'n paar Timern sagt, wann bestimmte Einheiten respawnen.
Jedenfalls will ich das dann auch in den Chat schreiben lassen für mein Team. Das schreiben funktioniert auch eigentlich so wie es soll (wenn ich z.B. im Editor bin, und das Event triggert, das die Wörter schreiben lässt, werden die Sätze in den Editor geschrieben). Wenn ich allerdings im Spiel bin, funktioniert es nicht. Das Programm mit seinen Ursprungsfunktionen klappt super wenn ich im Spiel bin, nur wird eben nichts geschrieben.

Könntest Du vielleich noch einmal versuchen zu erklären um was es geht?
Bei mir ist nur "Banhof Kofferklauen" angekommen.

Gruß
K-H

DeddyH 10. Feb 2012 16:58

AW: Keybd_event funktioniert nicht?
 
Das ging mir ähnlich, ich habe mir dann nur den Code angeschaut :lol:

CuddlyBunny 10. Feb 2012 17:27

AW: Keybd_event funktioniert nicht?
 
Ja ich bin nicht der Beste im Erklären.

Also ich spiele ein Spiel, bei dem gibt es so bestimmte Einheiten, die wenn man sie tötet, nach 5 Minuten respawnen. (League of Legends)
Wenn ich also diese Einheit töte, drücke ich eine Taste, und ein Timer läuft los, der eine Variable die auf 300 (für 300 Sekunden) ist, runterzählen lässt.
Wenn die Variable auf 30 ist, wird ein Event ausgelöst, bei dem mit der Simulation von mehreren Tastendrücken ein Satz in den Chat des Spiels geschrieben
werden soll. Das heißt also ich muss "Enter" simulieren, damit sich der Chat öffnet, danach muss ich das "Wort" simulieren, und danach muss ich erneut
"Enter" simulieren, damit er das Wort abschickt.

Jetzt zum Problem: Wenn ich versuche "Enter" zu simulieren, steht im Spiel nur "Type /help for a list of commands".
Das heißt irgendwie nimmt dieses Spiel die Simulation von "Enter" als ein Command auf.
Es funktioniert jetzt inzwischen alles, bis auf das "Enter" drücken.

Thx schonmal
- nico

p80286 10. Feb 2012 17:36

AW: Keybd_event funktioniert nicht?
 
Zitat:

Zitat von CuddlyBunny (Beitrag 1150364)
Jetzt zum Problem: Wenn ich versuche "Enter" zu simulieren, steht im Spiel nur "Type /help for a list of commands".
Das heißt irgendwie nimmt dieses Spiel die Simulation von "Enter" als ein Command auf.
Es funktioniert jetzt inzwischen alles, bis auf das "Enter" drücken.

Also es handelt sich nicht um ein von Dir geschriebenes (Spiel-)Programm, dann hätte ich Dir etwas anderes vorgeschlagen, sondern Du willst eine Programmbedienung durch ein von Dir geschriebenes Programm simulieren. Soweit richtig verstanden?

Gruß
K-H

CuddlyBunny 10. Feb 2012 17:39

AW: Keybd_event funktioniert nicht?
 
Ja. In diesem Spiel(Programm) will ich (mit meinem selbstgeschriebenem Programm) mehrere Tastendrücke simulieren.

CuddlyBunny 10. Feb 2012 17:53

AW: Keybd_event funktioniert nicht?
 
Ich hab den Bug gefunden. Die Simulation der Tastendrücke die ich in meinem Programm gemacht hab, kam zu schnell hintereinander. Ich hab zwischendurch ein Sleep(30) eingefügt, und jetzt funktionierts :) Trd danke dass ihr euch zeit genommen habt^^


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