Anfängerprobleme mit send und anderen Fenster-Interaktionen

  • Hallo AutoITler,

    schön, dass ich Euch gefunden habe. Ich hab schon das Buch und das Wiki befragt, die Suche auch, mein erstes größeres Problem bleibt.
    Da ich in Zukunft wahrscheinlich häufiger silent Installer erstellen muss, will ich das jetzt mal üben. Ich hab mir eine Installationsdatei von Celestia und eine von Irfanview gezogen um das zu probieren. Bei beiden klappt die Interaktion mit dem Instaler Fenster nicht. Das ist mein Quelltext:

    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    AutoIt Version: 3.3.8.1
    Author: derDon222

    [/autoit][autoit][/autoit][autoit]

    Script Function:
    Template AutoIt script.

    [/autoit][autoit][/autoit][autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    ; Script Start - Add your code below here

    [/autoit][autoit][/autoit][autoit]

    ShellExecute("iview433_setup.exe")
    Opt("WinTitleMatchMode", 2)
    WinWait("Irfan")
    WinWaitActive("Irfan")

    [/autoit][autoit][/autoit][autoit]

    Sleep(2000)
    ;MsgBox (0,"Status",WinGetState("Irfan"))
    Sleep(2000)
    Send("!w")
    ;MsgBox(0,"Meldung","...bin durch",4000)

    [/autoit]


    Wenn ich die beiden auskommentierten Zeilen aktiviere kriege ich zuerst die 15 zurück, also ist das Fenster aktiv, und das Programm wird auch zu Ende abgearbeitet ("...bin durch" erscheint). Leider gibt es aber keine Regung im Irfanview Installer.
    Auch kann ich das Fenster nicht mit WinFlash("Irfan") oder WinSetState("Irfan","",@SW_MINIMIZE) beeinflussen.

    Was mache ich falsch?

    P.S.: Ich habe weiter geforscht: Merkwürdigerweise kappen alle sends und WinSetStates, wenn ich sie auf eine Instanz von Notepad anwende; nur die Installer machen die Mucken.

    Danke schon mal für Eure Mühe

    und bis bald,

    der Don

    2 Mal editiert, zuletzt von DerDon222 (3. Juni 2012 um 00:28)

  • BIn zwar auch noch nen Noob aber Notepad ist eine Windows anwendung deswegewn funzt dir nur mit der richtigen Exe datei alle anderen solltest du den richtigen kompletten Pfad angeben gib den Pfad in Englisch an funktioniert wohl nur nicht mit vista Pre ansonsten verwende ProgramfileDir glaub heisst der Befehl, hab ich mist erzählt berichtigt mich XD

  • Daniel: Wieso? Er hat doch den kompletten Dateinamen angegeben? :o Solange die Datei im selben Verzeichnis liegt, funktioniert sein Script.
    @Der Donn: Du solltest dir mal die Control-Befehle in der Hilfe anschauen. Mit ihnen ist es möglich das Fenster allein mit dem entsprechenden Handel anzusprechen und Buttons zu drücken usw... Daher entfällt auch das bei der Send-Methode nötige in den Vordergrund holen und es ist auch möglich das Fenster gleichzeitig zu verstecken.
    ;)

    LG
    Christoph :)

  • Also es ist wirklich merkwürdig: Ich habe auf Euren Rat hin das mal mit Control Befehlen versucht aber, siehe da, auch das geht nicht. Für den IrfanView Installer sah das so aus, brachte aber keine Regung im Dialog:

    [autoit]

    ControlClick("Irfan","&Weiter >",12324)

    [/autoit]


    Auch die Fenster Kontrolle geht nicht, und hier wird es echt merkwürdig. Dieser Scriptauszug:

    [autoit]

    WinMinimizeAll()
    Sleep(2000)
    MsgBox (0,"Status",WinGetState("7-Zip 9.20 Setup ","will install"))
    WinSetState("7-Zip 9.20 Setup ","will install",@SW_MAXIMIZE)
    WinSetState("Editor","",@SW_MAXIMIZE)

    [/autoit]


    Minimiert zunächst alle Fenster, gibt korrekt den Status als 15 und 23 aus
    maximiert dann aber nur den Editor, auf das Installerfenster hat es keine Auswirkung.

    Sprich: alle meine Versuche funktionieren bei normalen Programmen (Notepad, Firefox, JavaEditor), nur die Installer stellen sich quer; und zwar alle die ich getestet habe:

    • Celestia
    • 7-Zip
    • Irfanview
    • JavaEditor

    Ich bin immer ratloser. Kann das an irgendeinem Parameter der Umgebung liegen? Ich habe AutoIT in einer virtuellen Windows7 (glaube 32Bit) Maschine am laufen und arbeite auch nur in dieser Maschine. Host für das alles ist Ubuntu 12.04.

    Wenn jamand von Euch Zeit hat, wäre es toll, wenn er/sie das mal auf seinem Rechner mit einem dieser Installer nachvollziehen könnte - vielleicht ein Bug in AutoIT?

    Noch nicht hoffnungslos, da dies ja offenbar eine sehr aktive Community ist:

    der Don

  • Ich krieg die Motten:

    Aus lauter Ratlosigkeit habe ich das ganze jetzt noch mal in einer virtuellen Maschine unter Windows XP probiert und was soll ich sagen: ES GEHT! Problemlos, genau wie es soll. Eigentlich ja toll, jetzt habe ich nur keine Ahnung, ob das auf anderen Win7 Rechnern auch geht oder eben nicht. Und wenn nicht, woran es dann liegt. Also zum Testen: Dies ist das Skript, das diese Datei still installiert:

    [autoit]

    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.8.1
    Author: derdon222
    Script Function: Install Celestia quietly
    Template AutoIt script.

    #ce ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    ; Script Start - Add your code below here

    [/autoit][autoit][/autoit][autoit]

    ShellExecute("celestia-win32-1.6.1.exe")
    Opt("WinTitleMatchMode", 2)

    [/autoit][autoit][/autoit][autoit]

    WinWait("Setup")
    WinWaitActive("Setup")
    Sleep(2000)

    [/autoit][autoit][/autoit][autoit]

    ;Install Routine durchgehen
    Send(" ")
    Send("{TAB}")
    Send("{UP}{Enter}{Enter}{Enter}{SPACE}{Enter}{Enter}")

    [/autoit][autoit][/autoit][autoit]

    ;warten bis Install Vorgang fertig ist
    WinWaitActive("Setup","Setup has finished installing Celestia on your computer.")

    [/autoit][autoit][/autoit][autoit]

    ;Nach-Installations-Dialog
    Send("{SPACE}{DOWN}{SPACE}{Enter}")

    [/autoit][autoit][/autoit][autoit]

    ;Abschlussbestätigung
    MsgBox(0,"Meldung","Celestia fertig",4)

    [/autoit]

    Für Hilfe bei der weiteren Problemforschung wäre ich dankbar!

    Bis bald,

    Der Don

  • Manchmal ist es wirklich zum Verrückt werden - es muss daran liegen, dass ich Windows nicht mehr gewöhnt bin.... Ich habe die erste und älteste Windows-Regel nicht befolgt: Um es mit der IT-Crowd zu sagen: "Did you try turning it on and off again?". Kurz: Nach einem Reboot lief alles wie es sollte 8| fragt mich nicht.

    Also Problem gelöst, Euch allen ein herzliches Dankeschön für Eure Mühe,

    gute Nacht,

    der Don