Probleme mit WinWait und ProzessWait

  • Hallo,
    ich habe da ein Problem beim Fenstererkennen, bei schnelleren Rechnern (Core2Dou E8400).

    Wenn ich folgendes Script auf einem langsamen Rechner (AthlonXP 2000) laufen lasse, so funktioniert das einwandfrei.
    Beispielscript:

    Befehle....
    ; Das Fenster durch einen Klick auf "Installieren" schließen.
    ControlClick($Fenster_Titel, "&Installieren", "Button2")
    Sleep(500)

    ; Eintragungen usw. in folgenden Fenster (das während der Installation angezeigt wird).
    ; Warten bis das Fenster des Installationsprogramms existiert.
    WinWait($FensterTitel, $FensterText)
    Weitere Befehle...

    Ende des Beispielskriptes:
    Aber wenn ich dieses Script dann auf dem schnelleren Rechner laufen lasse, so läuft es nicht mehr.
    Dann wird das erste Fenster einwandfrei abgearbeitet und auch durch den Klick auf den &Installieren-Button geschlossen, aber das folgend Fenster wird nicht mehr erkannt obwohl es richtig angezeigt wird.
    Dann wartet der Rechner nämlich ewig auf das nächste Fenster.
    Auch das Sleep zwischen den beiden Fenstern verlängern oder ganz weglassen, funktioniert nicht.
    Das einzige, was da funktioniert ist wenn man den WinWait-Befehl komplett weglässt und damit auf die Fenstererkennung ganz verzichtet.
    Anscheinend gibt es da ein Problem, wenn ein Fenster schon existiert bevor die WinWait-Abfrage kommt.

    Das selbe Problem habe ich auch beim ProzessWait-Befehl.
    Wenn der gesuchte Prozess schon existiert bevor der ProzessWait-Befehl abgearbeitet werden soll, so warte der schnellere Rechner vergebens auf den Prozess.

    Anscheinend muss man bei schnelleren Rechner da einen extra Befehl o.ä. einfügen, damit der Rechner etwas gebremst wird.
    So ist ein derarter Rechner anscheinend einfach zu schnell für AutoIt.

    Oder ist das ein spezielles Problem beim Einsatz von DualCore-CPU`s ?
    (Da scheint nämlich das Installation-Programm schneller zu laufen als das AutoIt-Script).

    Für eine Hilfe bei diesem Problem, währe ich sehr dankbar.
    (vielleicht kennt ja schon einer dieses Problem und auch die Lösung dazu).

    Gruß:
    BigRox

    Einmal editiert, zuletzt von BigRox (3. Juni 2008 um 15:38)

  • Hallo.

    Evtl. hilft Dir ein Ausschnitt von dem Script für den Login zum SMC weiter.
    Hier ist die WinWait sehr gut ersichtlich.

    Spoiler anzeigen
    [autoit]


    ...
    WinWait("http://192.168.10.1/login.htm - Microsoft Internet Explorer")
    If Not WinActive("http://192.168.10.1/login.htm - Microsoft Internet Explorer") Then WinActivate("http://192.168.10.1/login.htm - Microsoft Internet Explorer")
    WinWaitActive("http://192.168.10.1/login.htm - Microsoft Internet Explorer")
    ...

    [/autoit]

    Gruß, Crazy-A(lina).

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ich habe auch einen Dual Core und habe diesbezüglich keine Probleme.

    Haben die Prozesse/Fenstertitel den gleichen Namen (z.B. setup.exe) ?
    Kannst Du ein Beispiel posten ?
    So lässt sich nicht viel dazu sagen ...


    Gruß
    Greenhorn


  • Hallo Greenhorn,
    Beispiele gäbe es da sehr viele, die Probleme treten nämlich bei allen Installationscripten auf.

    Das einzige was bei allen Scripten immer das selbe ist, der Fenstertittel ist bei beiden Fenstern immer gleich z.B. "Winamp Setup", aber der Fenstertext ist immer verschieden z.B. erstes Fenster "Interface and Skin Selection" und zweites Fenster: "Installing".

    Gerade habe ich auch noch festgestellt, das die erkennung von Fenstertitel und Fenstertext beim Befehl "WinExists" aber immer richtig funktioniert. Da wird auch zwischen den verschiedenen Fenstertexten bei gleichem Fenstertitel richtig unterschieden.

    Beim Problem mit dem Befehl "ProzessWait" sieht es dagegen so aus, das der Prozess z.B. "notepad.exe" vorm aufrufen des Befehles "ProzessWait" nicht schon existieren darf (z.B. wegen einem anderen Fenster das eine TXT-Datei mit dem Notepad anzeigt), sonst wird er nicht erkannt.

    Die Version von AutoIt die ich verwende ist: 3.2.12.0

    Gruß:
    BigRox

  • Moin-Moin BigRox.

    Mein Freund die Hilfe sagt dazu:
    autoit.de/wcf/attachment/2329/

    Um die Info's von dem Fenster zu erfahren gibt es meinen zweiten Freund, die "AutoIt v3 Windows Info".

    Dank der Hilfe und "AutoIt v3 Windows Info" bekommt man dann folgenden Code (aus der Hilfe):

    Spoiler anzeigen
    [autoit]


    Run("notepad.exe")
    WinWaitActive("Untitled - Notepad")
    Send("This is some text.")
    WinClose("Untitled - Notepad")
    WinWaitActive("Notepad", "Do you want to save")
    Send("!n")

    [/autoit]

    Ansonsten pack "A sleeping bag" in den Script. Auf "Deutsch": Pack paar sleep(2000) mit in den Script. Wenn es dann geht, kannst Du den Sleepwert von 2 Sekunden (2000) in hunderten Anständen verringern.

    LG und allen ein sonniges Weekend,

    Crazy-A(lina).

    Dateien

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Crazy-A (30. Mai 2008 um 11:10)