Mysteriöses Problem?

xkill

Mitglied
Sehr geehrte Leser und Leserinnen,

ich habe eine Funktion, die einen Robot dazu beauftragt eine Taste an ein Programm zu senden in einem gewissen zeitlichen Abstand:


Code:
Robot robot = new Robot();
for (int i=0; i<100; i++) {
robot.delay(3000);
robot.keyPress(KeyEvent.VK_7);
robot.keyRelease(KeyEvent.VK_7);
Thread.sleep(4000);
}

Wenn ich das Programm bei mir laufen lassen funktioniert es ohne Probleme.

Sobald ich es bei anderen Leuten ausprobiere kommt folgendes Problem:

Sobald ich Notepad im Fokus habe, funktioniert es und Notepad empfängt die Siebenen.

Wenn ich allerdings ein bestimmtes Spiel (UT3 Engine) fokussiere, also in den Vordergrund von Windows nehme, sendet er die Zeichen nicht an dieses Spiel, auf der Tastatur kann ich "7" drücken und das Spiel empfängt die der Tastatur, doch nicht die von Java.

Wie gesagt, bei mir empfängt das Spiel die Signale von dem Robot.

Hat jemand eine Ahnung was ich an dem Robot, dem Java Programm oder in Windows an den Berechtigungen verändern muss, damit das Tool auf "jedem" Rechner so läuft, dass alle Programme die Signale von den Robots empfangen?

Am Spiel an sich scheint es ja nicht zu liegen, da es bei mir auf dem PC funktioniert.

Vielleicht hatte jemand ja schon so ein Problem, oder hat eine Ahnung woran es liegen kann, ich bin für jeden Hinweis dankbar!

Mit freundlichen Grüßen
xkill
 
Sorry, Java ist dafür nicht geeignet. Manche Programme, besonders Vollbild-Anwendungen wie Computerspiele übernehmen die Eingabe des Nutzers direkt, schleußen sie also an einem Teil des Betriebssystems vorbei, daher können sie auch nicht auf die Eingaben von anderer Software reagieren. Eventuell hilft dir AutoHotKey, https://en.wikipedia.org/wiki/Autohotkey weiter. Je nach Spiel und Betriebssystem kann es aber auch passieren, dass es gar keine Möglichkeit gibt, die von dir gewünschte Funktionalität zu erreichen.
 
Danke für die Antworten!
Was ich allerdings wundernswert finde ist, dass es ja bei mir und auch bei manchen anderen Usern funktioniert, allerdings eben bei manchen nicht, bisher habe ich keine Konstante festellen können. Sobald ich herausfinde woran es liegt, melde ich mich wieder.
 
Vielleicht liegt es an dem Grafikkartentreiber, der Version des Betriebssystems, an irgendwelchen Sicherheitseinstellungen oder auch an anderen Einstellungen.
 
Also aufgrund von diversen Tests, liegt es wohl am exakten Timing vom Starten des Robots und des Spiels.

Ich hab jetzt einfach in c++ ein Screenshot Tool geschrieben und der Runtime.exec ausgeführt, ich hatte in Erinnerung, dass der Robot mit Directx Screenshots Probleme hatte, ist das richtig?

Greetz
xkill
 
Hallo,

Ich hatte ein ähnliches Problem.

Und zwar wird Press und Release direkt hintereinander aufgerufen.
Kein Mensch schafft es eine Taste innerhalb von 10ms und dergleichen zu drücken und wieder loszulassen.
Zwischen den beiden Aktionen sollte eine realistische Pause (Einige 100ms) liegen, da manche Anwendungen es aufgrund von seltsamer Eventverarbeitung sonst nicht mitbekommen.

Gruß,
Martin C.
 
Zuletzt bearbeitet:
Danke für eure Hilfe, ich hab jetzt von Java zu C++ umgeschwenkt, da ich dort auf andere Art und Weise screenshots kreieren kann.

Da bin ich auch auf eine Frage gestoßen, aber die kommt wie es sich gehört ins richtige Forum.

Danke nochmal an alle!
*close*
 
Zurück