Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Java-Programm wird beendet, wenn ich Spiel öffne...
Hi,
ich hab mir aus Spaß auf einer LAN einen autoclicker geschrieben, um mir einen unfairen Vorteil zu verschaffen
Allerdings klappt das nicht so ganz, wie ich es mir vorstelle.
Bei dem Spiel handelt es sich um Warcraft 3. Wenn ich das Programm starte und anschließend in Warcraft 3 switche, wird das Programm automatisch beendet. Es wird keine Exception geschmissen. Womit hängt das zusammen? Habe es mal bei anderen Spielen getestet und da funktioniert es.
Hier mal der Code:
Java:
import java.awt.Robot;
import java.awt.event.InputEvent;
public class MausKlick {
public static void main(String[] args) throws Exception {
Thread.sleep(5000);
Robot a = new Robot();
int x = 0;
while (x < 260) {
a.mousePress(InputEvent.BUTTON1_MASK);
a.mouseRelease(InputEvent.BUTTON1_MASK);
x++;
Thread.sleep(200);
}
}
}
Ja da bin ich mir sicher. Habe Thread.sleep(xxxx) schon so eingestellt, dass es eigentlich 5 min laufen müsste, aber es wird beendet, sobald ich in wc3 wechsle.
Wenn das Programm von Warcraft erkannt und automatisch geschlossen wird, finde ich das ja sehr interessant. Wie kann ein Programm einfach auf meins zugreifen und es beenden? Sowas zu entwickeln erfordert doch einen krassen Hack, oder ist sowas leicht realisierbar? Finde das wirklich spannend.
Gibt es theoretisch nicht Möglichkeiten sowas zu umgehen? Vielleicht ein ActionListener der Eingriffe auf mein Programm überwacht und automatisch beendet. Ist sowas möglich? :rtfm:
PS: zu dem Thema, dass mein Programm nur 57s läuft. Ja in dem konkreten Beispiel ist das so, aber habe Thread.sleep(xxxx) zuvor auch schon sehr viel höher gestellt.
Das mit dem Cheat-detector glaube ich eher weniger. Meine Theorie wäre, dass wc3 extrem agressiv CPU für sich behält und Java nicht zum Zug kommt. Bist du dir ganz sicher, dass das Programm beendet wird? Hast du im taskmgr nachgeschaut?
Log doch einfach mal dein Programm, dann wirst du sehen ob es sich überhaupt beendet, wann es sich beendet etc.
Ich glaube definitiv nicht, dass es daran liegt, dass man keine Resourcen kriegt.
Ja das Programm wird mit Sicherheit beendet. Ich starte es ja über Eclipse und dort kann ich ja sehen ob ein Programm noch am laufen ist.
Habe mal einen logger folgendermaßen eingebaut:
Java:
Logger logger = Logger.getLogger("wc3 logger");
FileHandler fh = new FileHandler("C:\\log\\log.log");
logger.addHandler(fh);
logger.setLevel(Level.ALL);
SimpleFormatter format = new SimpleFormatter();
fh.setFormatter(format);
logger.log(Level.ALL, "START");
Aber dem log kann man nichts entnehmen. Das einzige was die log-datei enthält ist:
Code:
04.12.2010 18:31:18 MausKlick main
ALLE: START
Das Programm führt beim erstmaligen nutzen in Warcraft ca. 5 Klicks aus und ist dann beendet. Wenn ich das Programm anschließend neu starte, wird nurnoch ein Klick ausgeführt und es automatisch beendet...
Ka, vllt wurde Thread.sleep aus irgend einem Grund nicht ausgeführt und dann lief das ganze so schnell, dass das wc3 nicht nachgekommen ist und nur 5 Mausklicks erhalten hat.