Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi automatisch in bestimmtem Intervall Taste senden (https://www.delphipraxis.net/84261-automatisch-bestimmtem-intervall-taste-senden.html)

microhome 14. Jan 2007 10:11


automatisch in bestimmtem Intervall Taste senden
 
Hallo ihr Lieben,
ich hab mal eine Frage zur Simulation von einem Tastendruck und dem Senden von diesem an eine andere Applikation. Ich weiß, dass ersteres schon 1000 Mal behandelt wurde, aber ich weiß nicht wie ich das ganze in Zusammenhang bringen kann.
Folgende Aufgabe ist zu lösen: Ich habe ein Spiel, welches nach 30 Minuten inaktiv wird. Wenn ich jedoch innerhalb dieser Zeit eine Taste drücke, dann verlängert sich diese Zeit entsprechend. Meine Idee ist die, ein einfaches Programm zu schreiben, welches im Hintergrund läuft und alle 15 Minuten den Rechtspfeil eine Sekunde lang (!) an das Programm senden. So dreht sich die Figur im Spiel und die "Deadline" zur Inaktivität wird um 15 Minuten verlängert.

Habt ihr Ideen oder Codeschnipsel, um das Ganze so zu realisieren?



Vielen Dank schonmal im Vorraus!
m!cro

3_of_8 14. Jan 2007 10:12

Re: automatisch in bestimmtem Intervall Taste senden
 
Ein Timer und SendKeys.

microhome 14. Jan 2007 10:22

Re: automatisch in bestimmtem Intervall Taste senden
 
Also nen Timer starten, der alle 15 Min einen timer aufruft, der eine sekunde lang sendkeys aufruft?

SirThornberry 14. Jan 2007 10:24

Re: automatisch in bestimmtem Intervall Taste senden
 
Dein Spiel wird ja vermutlich schon den Focus haben und muss somit nicht erst den Focus erhalten.

microhome 14. Jan 2007 10:26

Re: automatisch in bestimmtem Intervall Taste senden
 
Ja, das mit dem Focus hat sich wohl erledigt, weil so wie ich das gerade gelesen habe, sendkeys extra dafür gemacht ist, keys an externe Applikationen zu senden.

microhome 14. Jan 2007 10:59

Re: automatisch in bestimmtem Intervall Taste senden
 
So, bisher habe ich folgendes:

procedure TForm4.Button1Click(Sender: TObject);
var i: integer;
begin
for i:=1 to 10 do // = 10 Mal
begin
Keybd_Event(Ord('A'),0,0,0);
sleep (1000);
Keybd_Event(Ord('A'),0,KEYEVENTF_KEYUP,0);
sleep(10000); // alle 10 Sek
end;
end;

Also zum testen alle 10 Sek statt 15 Min. Nur nun habe ich durch die for-Schleife das Problem, dass ich das Ganze nicht stoppen kann. Ich könnte auf die Form noch einen Button für stop legen, aber ich kann ja die Form nicht mehr aufrufen (solange die Schleife läuft)...

Was kann ich da machen? Helfen SpeedButton da weiter?



m!cro

inherited 14. Jan 2007 11:21

Re: automatisch in bestimmtem Intervall Taste senden
 
Man nehme: einen Timer mit Interval 15 Minuten und da das senden des Keys. Alternativ könntest du mal nach DelayDelay suchen, das ist ein Sleep ohne Sleep.

Klaus01 14. Jan 2007 11:22

Re: automatisch in bestimmtem Intervall Taste senden
 
Zitat:

Zitat von microhome
So, bisher habe ich folgendes:

procedure TForm4.Button1Click(Sender: TObject);
var i: integer;
begin
for i:=1 to 10 do // = 10 Mal
begin
Keybd_Event(Ord('A'),0,0,0);
sleep (1000);
Keybd_Event(Ord('A'),0,KEYEVENTF_KEYUP,0);
sleep(10000); // alle 10 Sek
end;
end;

Also zum testen alle 10 Sek statt 15 Min. Nur nun habe ich durch die for-Schleife das Problem, dass ich das Ganze nicht stoppen kann. Ich könnte auf die Form noch einen Button für stop legen, aber ich kann ja die Form nicht mehr aufrufen (solange die Schleife läuft)...

Was kann ich da machen? Helfen SpeedButton da weiter?



m!cro

Anstelle einer Schleife könntest Du einen Timer benutze der alle 10 Sekunden ausgelöst wird.
Mit einem Button könntest Du den Timer von enabled auf disabled stellen um die Aktionen
zu starten oder zu unterbrechen.

Grüße
Klaus

microhome 14. Jan 2007 11:56

Re: automatisch in bestimmtem Intervall Taste senden
 
Das ist ne super Idee! Danke dir. Thema gelöst.


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