If Funktion

  • Servus,
    hab gerade vor 2 Stunden mit Autoit angefangen, nun hätte ich eine Frage:

    _WinWaitActivate("Program Manager","")
    MouseClick("left",1663,265,1)
    Send("{ENTER}")
    Sleep (2500)
    If _WinWaitActivate("Optimale Einstellungen vornehmen?","")

    _WinWaitActivate("Optimale Einstellungen vornehmen?","")
    MouseClick("left",425,199,1)

    ElseIf _WinWaitActivate("Test","")
    EndIf
    Sleep (5000)
    _WinWaitActivate("Test","")
    MouseClick("left",718,721,1)
    Sleep (500)

    Also bei der If Abfrage soll er klären, wenn ein Fenster mit dem titel "Optimale EInstellungen vornehmen?" im vordergrund ist dann soll er auf eine gewisse stelle klicken, wenn nicht also wenn das Fenster mit dem Titel "Test" kommt,
    dann soll er einfach weiter gehen im Code. Wie kann ich das erreichen?

    MfG.

  • [autoit]

    If WinActive("Optimale Einstellungen vornehmen?") ThenIf WinActive("Optimale Einstellungen vornehmen?") Then
    ;...
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von Slyfex (21. Februar 2010 um 07:14)

  • Hier einmal komplett:

    [autoit]


    WinWaitActive("Program Manager","")
    MouseClick("left",1663,265,1)
    Send("{ENTER}")
    Sleep (2500)
    If WinActive("Optimale Einstellungen vornehmen?") Then
    MouseClick("left",425,199,1)
    Endif
    Sleep (5000)
    MouseClick("left",718,721,1)
    Sleep (500)

    [/autoit]

    Wenn ich irgendwie das Script falsch interpretiert habe, bitte melden ^^

  • [autoit]

    WinWaitActivate

    [/autoit]

    :rofl:

    Ist falsch!

    [autoit]

    WinWaitActive

    [/autoit]

    ist richtig!

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • ich glaube, da müssen wir erstmal im Grundsatz was klären...

    Zitat

    Also bei der If Abfrage soll er klären, wenn ein Fenster mit dem titel "Optimale EInstellungen vornehmen?" im vordergrund ist dann soll er auf eine gewisse stelle klicken, wenn nicht also wenn das Fenster mit dem Titel "Test" kommt,
    dann soll er einfach weiter gehen im Code. Wie kann ich das erreichen?

    Soweit ich bisher verstanden habe willst Du folgendes:
    Programm-Manager starten --> Richtig?
    Warten bis ein bestimmtes Fenster erscheint --> Richtig?
    Wenn Du dabei keinen Timeout setzt, wird Dein Script bis zum St. Nimmerleinstag auf das Fenster warten. --> Willst Du das?

    Frage: Wieso sollte mal das eine Fenster erscheinen und mal das andere? --> Verstehe ich nicht

    Du verwendest Befehle, die es gar nicht gibt _WinWaitActivate und so ?!?!?!
    Es gibt WinWait() ; das wartet bis ein Fenster existiert
    und es gibt WinActivate() ; Setzt ein bestehendes Fenster in den Vordergrund.

    Vielleicht kannst Du das nochmal genauer erklären...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Vielleicht hat er die Funktionen kombiniert ^^ z.B. so:

    [autoit]

    Func _WinWaitActivate($sTitle,$sText,$iDur)
    If Not WinExists($sTitle, $sText) Then Return -1
    WinActivate($sTitle, $sText)
    WinWaitActive($sTitle, $sText, $iDur)
    If Not WinActive($sTitle, $sText) Then Return -2
    Return 1
    EndFunc

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Danke für die ganzen Antworten, ihr habt mir weitergeholfen :)

    btw. _WinWaitActivate

    Code
    Func _WinWaitActivate($title,$text,$timeout=0)
    	WinWait($title,$text,$timeout)
    	If Not WinActive($title,$text) Then WinActivate($title,$text)
    	WinWaitActive($title,$text,$timeout)
    EndFunc