Fenster bleibt nicht aktiv

  • Hallo Zusammen,

    da es ja die Stade Zeit ist, habe ich mich in AutoIt etwas eingelesen und meine ersten Scripte bereits geschrieben, die auch wie gewünscht funktionieren.

    Nur heute scheitere ich an einer Kleinigkeit.

    Ich habe mir ein Script zur Installation von Nero 7.5.9.0 geschrieben.
    Dabei habe ich immer das Problem, daß das Fenster nicht aktiv bleibt :(

    Zuerst dahcte ich an meinen Rechner, daß das Windows nen Hau wech hat, aber beim Testen auf einem frischinstallierten Rechner habe ich das gleiche Problem. Also liegt es nicht an meinem XP.

    Ich habe dann verschiedene Dinge ausprobiert, nichts funktioniert zuverlässig.
    Auf http://www.windows-unattended.de habe ich dann auch ein fertiges Script gefunden, wo auch schon jemand wohl ähnliches Problem hatte, aber es funktioniert bei mir nicht zuverlässig:

    --------------------------------------------------------------------------
    $title = "Nero 7 - Installations-Assistent"

    Run("Nero-7.5.9.0A_deu_no_atb.exe")

    WinWait($title)

    If Not WinActive($title, "Willkommen") Then WinActivate($title, "Willkommen")

    While 1
    If ControlCommand($title, "&Weiter >", "Button1", "IsEnabled") = 1 Then ExitLoop
    Sleep(250)
    WEnd

    ControlClick($title, "&Weiter >", "Button1")
    ...
    ...
    ---------------------------------------------------------------------------

    Wenn ich über das erste Fenster hinwegkomme, dann ist es das zweite Fenster was den "ControlClick" nicht annimmt. Aktiviere ich mit der Maus das Fenster, dann geht es tadellos weiter. Und das passiert bei manchen Fenstern. Ansonsten würde das Script laufen.

    Es sieht manchmal so aus, als ob ein redraw vom Fenster passiert und dadurch inactiv wird. Kann aber auch meine Einbildung sein.

    Hat irgendjemand eine Idee oder ähnliche Erfahrungen?

    Besten Dank im voraus und nen guten Rutsch!
    R@iner

    • Offizieller Beitrag

    Hallo!

    Eigentlich sollte ControlCommand ebenso wie ControlClick kein aktives Fenster, sondern nur ein vorhandenes Fenster benötigen.
    Vielleicht ist es in diesem Fall einfacher, sich die Parameter zu suchen, mit denen man Nero auch ziemlich sicher silent installieren lassen kann. Mit ShellExecute, Run oder RunWait kann man diese dann leicht an die install.exe übergeben.
    Soweit ich mich an Nero erinnere war die GUI dort keine Standard Windows-GUI, sondern ein selbstgebasteltes Zeug, mit dem sich AutoIt nicht wirklich gut verträgt.
    Tut mir leid, dass ich da kein Patentrezept präsentieren kann.

    Vielleich geht noch Tastaturautomation statt ControlClick usw.

    peethebee

  • Hallo Zusammen,

    hey Dr.Galvany, die while-Schleife habe ich aus Deinem Script gekupfert! :)

    Läuft das bei Dir fehlerlos? Warum hast Du die While-Schleife eingebaut? Dadurch wurde es schon viel besser. Ohne dem ging ja garnichts, was ja darauf schliessen liese, daß die Buttons nicht aktiv sind.

    Aber der Button ist schon aktiv, sonst würde er ja aus der While-Schleife nicht rauskommen. Das ganze Fenster ist nicht aktiv. Wie schon gesagt, wenn ich mit der Maus das Fenster anklicke, dann geht es problemlos weiter.

    Kann es daran liegen, daß ich nicht mit der Beta-Version arbeite, sondern mit der Final-Version von AutoIt?

    Komisch ist nur, daß das Problem nicht immer auftritt. Auf dem einen Rechner ja, auf dem anderen nicht. Meist bleibt das Script aber bei der "Lizenz-Abfrage" stehen. Es ist mir ein Rätsel.

    Heute kein happy computing!
    R@iner

  • ja das könnte ich mir gut vorstellen, das da ein langsammer rechner etwas probleme macht.

    wie du ja schon bemerkt hast ist die schleife da um zu gewärleisten, das der button auch activ ist.
    setze nach der schleife mal noch ein sleep(2000) ein, dann sollte das aber problem los gehen.

    das nero macht genau bei diesen punkt einen sehr unlogisches verhalten.
    das andere "Lizenz-Abfrage" schaue ich mir morgen noch mal an :)

    Doktore

  • moin, so habe es jetzt noch mehrmals getestet und es ging bei mir immer :rolleyes:
    das problem wo du beschreibst, sollte ja genau die schleife vermeiden.
    ich hänge mal den anfang an, der hat noch einen sleep, den man "normaler weise" nicht brauchen sollte.
    aber vileicht hilft es dir ja.
    nero ist echt ein sch... installer :schild4:
    habe auch den titel abgeändert, da ja ab den zeitpunkt einer gültigen serial eingabe, sich der titel ändert. :)

    also versuche es so noch mal :musik2:

    Spoiler anzeigen
    [autoit]

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

    AutoIt Version: 3.2.2.0
    Author: Dr.Galvany
    Programm: Nero 7.5.9.0A
    Erstellt: 14.12.2006
    Update: 29.12.2006

    Script Function:
    Template AutoIt script.

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

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

    ; Script Start - Add your code below here

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

    Opt ("MouseCoordMode", 0)
    Opt ("WinTitleMatchMode", 2)

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

    $title = "Installations-Assistent"

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

    Run ("Nero-7.5.9.0A_deu_no_atb.exe")

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

    WinWait ($title)

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

    While 1
    If ControlCommand ($title, "&Weiter >", "Button1", "IsEnabled") = 1 Then ExitLoop
    Sleep(50)
    WEnd

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

    Sleep (2000)
    ControlClick ($title, "&Weiter >", "Button1")

    [/autoit]

    Doktore

  • Hello again,

    ich geb es auf. Manchmal klappt es, manchmal nicht. Und das auf dem gleichen Rechner. Es klappt besser, aber nicht immer, wenn ich .net2-Framework nicht installiere. Der Sleep hilft auch nicht. Komisch komisch.

    Das mit dem Windows-Titel war bei mir kein Problem, da ich das Script ja ursprünglich komplett selber geschrieben habe.

    Ja, der Nero-Installer ist ein sch*******!

    Egel, ich aktiviere halt dann per Klick mit der Maus das Fenster. Ich hab keine Lust mehr, dafür ist mir meine Zeit zu schade.

    Ich bin nicht so geübt mit dem Forum. Kannst Du mir bitte verraten, wie ich diesen Thread schliessen kann?

    Besten Dank
    R@iner

    Eine Frage hätte ich noch. Soll ich dazu einen neuen Thread öffnen oder "hier" bleiben?

    Ich hab hier ne Application, die sich brav installiert und dann das Icon im TrayBereich hinten rechts zeigt. Doch leider kann man die wichtigsten Einstellungen nur über das Menu im TrayIcon machen und nicht im offenen Fenster der Applikation. Wie kann ich das von AutoIt bedienen? In der Hilfe habe ich nur Befehle und Beispiele zum Erzeugen eigener TrayMenus gefunden.

  • und so???

    Spoiler anzeigen
    [autoit]

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

    AutoIt Version: 3.2.2.0
    Author: Dr.Galvany
    Programm: Nero 7.5.9.0A
    Erstellt: 14.12.2006
    Update: 29.12.2006

    Script Function:
    Template AutoIt script.

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

    ; Script Start - Add your code below here

    Opt ("MouseCoordMode", 0)
    Opt ("WinTitleMatchMode", 2)

    $title = "Installations-Assistent"

    Run ("Nero-7.5.9.0A_deu_no_atb.exe")

    WinWait ($title)

    While 1
    If ControlCommand ($title, "&Weiter >", "Button1", "IsEnabled") = 1 Then ExitLoop
    Sleep(50)
    WEnd

    Sleep (2000)
    WinActivate($title)
    ControlClick ($title, "&Weiter >", "Button1")

    [/autoit]

    Doktore

  • Hallo Dr. Galvany,

    ich wünsch Dir und den anderen Usern hier ein tolles Jahr 2007. Und Dir möchte ich speziell für Deine Geduld und Hilfe danken!

    Komischerweise wenn ich 5 mal das Image zurückspiele und mein Script drüberlaufen lasse, klappt es einmal fehlerlos und bei den anderen 4 geht das "aktivierte Window" bei irgendeinem Fenster flöten :( Da kann ich Schleifen oder Sleeps oder WinActivate einbauen, wie ich will, irgendein Fenster klappt dann nicht. Meist ist es dann das Fenster mit der "Lizenz-Abfrage" und später dann mit der "Benutzerdefinierten Installation".

    Egal, da muß ich halt dann per Hand nochmal nachhelfen. Ich werde heute auch mal die Beta-Version von AutoIt ausprobieren, vielleicht hilft das auch.

    Aber wie schon gesagt, von mir aus können wir den Thread schliessen. Nur wie geht das?

    Kannst Du, oder irgendein anderer, mir bitte meine andere Frage noch beantworten oder soll ich einen neuen Thread aufmachen?

    Zitat


    Ich hab hier ne Application, die sich brav installiert und dann das Icon im TrayBereich hinten rechts zeigt. Doch leider kann man die wichtigsten Einstellungen nur über das Menu im TrayIcon machen und nicht im offenen Fenster der Applikation. Wie kann ich das von AutoIt bedienen? In der Hilfe habe ich nur Befehle und Beispiele zum Erzeugen eigener TrayMenus gefunden.

    Happy computing!
    R@iner

  • ja von mir auch alles gute noch.
    ich gebe gerne meine hilfe weiter wenn ich kann, da mir ja auch HIER IMMER sehr gut und fachmänisch geholfen wird!

    dann kommt gleich mal ein dank an die Admin's und weiteren helfern
    DANKE! :kiss:

    Doktore

    • Offizieller Beitrag

    Hallo!

    Vielen Dank für das Lob, Dr.Galvany. Genau so soll es sein: Wem von uns geholfen wird, sollte im Idealfall in anderen Fällen oder später auch in der Lage sein, selbst anderen zu helfen. Macht Freude, das zu sehen.
    Und natürlich ist es schön zu sehen, dass wir hier inzwischen eine wirkliche Instanz in Sachen AutoIt geworden sind :klatschen:

    peethebee

  • Hallo Zusammen,

    peethebee
    Das Dreigespann WinWait, WinActivate, WinWaitAcive verwende ich schon

    Also, seitdem ich den Beta-Compiler jetzt benutze, läuft es bei 4 von 5 Versuchen. Damit höre ich jetzt endgültig auf an diesem Problem meine Zeit zu verschwenden.

    Verrät mir jetzt noch bitte einer, wie ich diesen Thread schliesse?! In der FAQ steht dazu nix. Hat noch jemand ne Idee zu meiner anderen Frage oder muß ich nen neuen Thread dazu aufmachen?

    Happy computing!
    R@iner