Problem beim senden von Tastenbefehlen

  • Hallo,
    dass ist mein erster Post hier in dem Forum.Deswegen erstmal ein herzliches Hallo :) . Bis vor zwei Tagen kannte ich AutoIT noch nicht, bin aber jetzt schon begeistert was damit alles machbar ist.
    Mein Problem ist folgendes:

    Ich besitze die Amazon Fire TV Box und habe darauf per Sideload die App "Limelight" installiert.
    Jetzt möchte ich von meinem Desktop Computer über Steam das Compilierte Script von AutoIT aufrufen um damit Fifa15 zu starten.

    Ich brauche dafür das Script, weil nach dem Start der Fifa15.exe erstmal Origin startet und anschließend ein Einstellungsfenster erscheint. Diese Fenster kann ich leider nicht mit dem Xbox360 Controller an der Fire TV Box steuern.
    Das Script funktioniert soweit bis es den Befehl zum starten des Spiels erreicht.

    Hier mal mein Script:

    Code
    Run ("G:\Origin Games\FIFA 15\fifa15.exe")
    WinWaitActive("FIFA 15")
    WinClose ("Steam")
    WinActivate ("FIFA 15")
    Send("{TAB 3}")
    Send("{DOWN}")
    Send("{TAB}")
    Send("{ENTER}")

    Also es wird FIFA und damit auch Origin gestartet. Steam wird beendet und das Einstellungsfenster für die Sprache und zum Starten von FIFA in den Vordergrund geholt.
    Danach wird das Spiel auf Deutsch gestellt und per TAB weiter auf den Button "Spiel starten" geswitcht. Jetzt sollte das Script den Befehl "ENTER" weitergeben. Macht es aber nicht.
    Wenn ich selber an der Tastatut ENTER drücke startet das Spiel sofort.

    Hat jemand eine Idee warum er die letzte Eingabe nicht übergibt?

  • wahrscheinlich hat keiner deine entsprechende Hardware um das zu testen!
    Vielleicht hat der Button nach dem Send("{TAB}") noch nicht den Focus.
    eventuell auch mit den Befehlen MouseClick, Controlclick, ControlSend mal dein Glück versuchen ...

    gruß gmmg

  • Das hatte ich auch vermutet. Aber wenn ich das Script ausführe und warte bis der Vorgang soweit abgeschlossen ist, und dann einfach Enter über die Tastatur drücke funktioniert es. Bedeutet das nicht, dass der Focus richtig auf dem Button liegt?

  • Herzlich wollkommen im Autoit FOrum:
    du kannst bei den Tab ruhig eine kleine pause danach einbauen.
    Versuch mal controllclick.
    Mit controlklick kannst du eigentlich auch direckt auf den enter button drücken.
    Bzw du kannst auch mit winsetstate einzelne Fenster minimieren oder in den Vordergrund holen.

    Wenn du noch weitere Fragen hast nur zu ^^

  • Hallo,

    also ich habe das Script jetzt mal geändert.

    Das Problem was ich jetzt habe .... Das Fenster hat bei jedem Start eine neue ClassID ;(
    Das einzige was gleich bleibt ist der Name.

    Ich hatte eben auch mal das Script ausgeführt ohne es vorher in eine .exe zu kompilieren. Dann funktioniert es mit dem "Enter" Befehl.


    Gruß
    Cubish2k

  • die class id brauchst du eigentlich nicht. der Name allein sollte ausreichen ^^
    wozu das send enter? der klick sollte eigentlich den button triggern oder brauchst du dann noch ein enter?
    aber da bist du ja als neueinsteiger weit gekommen bisher.
    Kleiner Tipp noch Codingstyle sprich ab und zu mal ein paar kommentare.
    Würde dazu mal heute ein Youtube Video machen bzw kleine Tutorial. ^^

    Ansonsten gute Anfang bisher viel Spaß noch beim lernen Autoit ist wirklich gut gemacht für den Einstieg

  • Hi,
    also ich konnte das Problem leider nicht auf direktem Weg lösen. Er hat weder mit "Send", ControlSend oder Controlclick gestartet. Da das Ganze aber funktionierte solange nur das Script ausgeführt wurde, habe ich ein zusätzliches Script angelegt in dem nur der Enter Befehl gesendet wird. Das kleine Script habe ich dann per ShellExecute im Hauptscript (exe) aufgerufen. Jetzt startet Fifa wie es soll.

    Danke nochmal für die Unterstützung.

    Bis dahin
    Cubish2k