auf 2 Optionen prüfen mit WinWait

  • Hallo,

    ich bin an einer automatischen Installation am basteln.
    Ich hätte ganz gern geprüft wenn ein Fenster mit Inhalt a kommt soll abc gemacht werden, aber wenn ein Fenster mit Inhalt x kommt soll xyz gemacht werden.
    Hintergrund ist: Wenn ich das setup starte und das Programm ist noch nicht vorhanden, dann kommt ein normaler Dialog - wohin installieren welche Optionen usw.
    Wenn aber das Programm bereits installiert ist, kommen andere Dialoge - reparieren, löschen, ändern
    Wie prüfe ich nun am besten welcher Dialog kommt und mache dann mit meinem Skript weiter.

    Zuerst hatte ich es so:

    [autoit]

    $win2 = WinWait("bla", "a", 5)
    $win2_1 = WinWait("bla", "x", 5)

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

    If $win2 Then
    abc
    ElseIf $win2_1 Then
    xyz
    Else
    error
    Exit
    EndIf

    [/autoit]

    Dann hab ich aber das Problem das mir der Timeout auf manchen PCs nicht hinhaut. Dann ist der Timeout rum aber das Fenster war noch garnicht da. Setze ich den Timeout sehr hoch hab ich das Problem das mir das Skript halt ewig wartet. Es ist möglich an diesem Punkt bis zu 10mins auf das Fenster warten zu müssen.
    Gibt es eine Lösung in der Art:

    Code
    Pseudocode:
    If WinWait("bla", "a") OR WinWait("bla", "x") Then ...
  • Ermitteln den Titel vom Fenster, wenn dieser bereits unterschiedlich ist und reagiere dementsprechend.
    Bsp. aus der Hilfe:

    Spoiler anzeigen
    [autoit]


    $title = WinGetTitle("[CLASS:Notepad]", "")
    MsgBox(0, "Der komplette Titel lautet:", $title)

    [/autoit]


    Ansonsten:
    Ermittel den Text des Fensters und reagiere dementsprechend.
    Bsp. aus der Hilfe:

    Spoiler anzeigen
    [autoit]


    $text = WinGetText("[CLASS:Notepad]", "")
    MsgBox(0, "Der gelesene Text lautet:", $text)

    [/autoit]

    Und wenn Du eh gerade dabei bist, die Hilfe zu verwenden, kannst Du sie auch links downloaden,
    speichern und schauen, was unter den beiden oberen Beispielen als Information steht. ;)
    Oder doch lieber was da drüber steht ;)

    CLASS kannst Du mit den AU3INFO Tool heraus finden.

    Du solltest folgendes in der Hilfe nachlesen:
    Autoit --> Allgemeines zu AutoIt --> Fenster-Titel und -texte (Grundlagen)
    Autoit --> Allgemeines zu AutoIt --> Fenster-Titel und -texte (erweitert)

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Ich würde das wie folgt lösen:

    [autoit]

    $start = TimerInit()
    Do
    If WinExists("Titel1") Then ExitLoop
    If WinExists("Titel2") Then ExitLoop
    Sleep(50)
    Until TimerDiff($start) > 5000 ; Timeout 5000 = 5s

    [/autoit]


    ungetestet

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Also warte ich sozusagen bis irgendein Fenster kommt und prüfe dann was drin steht und tue dann entsprechend reagieren.

    Wie warte ich auf irgendein Fenster? WinWait("", "") ?

    edit: ah ok mit ner schleife - klar ^^