Probleme mit IF Schleife

  • Hallo,

    ich möchte gerne ein ganz kleines Script bauen das nach Aufruf eines Fensters mit dem Titel "XYZ" ODER "ABC" etwas ausführt, wartet bis das Fenster "XYZ" ODER "ABC" wieder geschlossen ist und das als Endlosschleife...

    Einzelnt funktioniert es:

    [autoit]


    $i=1
    while $i = 1
    winwaitactive ("ABC")
    send ("{ENTER}")
    winwaitclose ("ABC")
    $i = 1
    WEnd

    [/autoit]

    Wenn ich ein OR dazwischen setze klappt es nicht, also wenn die erste Bedingung erfüllt ist schon, die 2. nicht - ist das ein Bug?

    [autoit]


    if winwaitactive ("ABC") OR winwaitactive ("XYZ") THEN
    send ("{ENTER}")
    Endif

    [/autoit]


    schonmal vielen Dank für die Hilfe :D

    Einmal editiert, zuletzt von svartsyn (19. Januar 2011 um 08:22)

  • Weiss zwar nicht was du willst, aber könnte das was für dich sein ??

    Spoiler anzeigen
    [autoit]

    While 1
    If ProcessExists("ABC.exe") Or WinActive("ABC") Then send ("{ENTER}")
    HotKeySet("{ESC}","EXIT_script")
    WEnd

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

    Func EXIT_script()
    Exit
    EndFunc

    [/autoit]
  • Ersetzt "WinWaitActive" mal durch "WinActive" ;)

    Danke, mit Winactive funktionierst...

    allerdings nächstes Problem:
    er soll die schleife erst fortsetzen wenn das Fenster wieder geschlossen wird...

    also ich erkläre mal wozu ich es benötige: (vllt gibt es da ja eine bessere Lösung, mir ist das auf die schnelle eingefallen)

    Ich will es für Outlook benutzen - also wenn man eine Digitale Signatur hat - 2 Email Konten (eine Intern, eine Extern) und auf Antworten klickt, wird immer das falsche Konto ausgewählt - so dass man immer das richtige Konto auswählen muss um die Digitale Signatur nutzen zu können.


    Das heißt:
    er soll, wenn sich ein Fenster mit dem Titel "AW:" oder "WG:" öffnet das richtige E-Mail Konto auswählen - nachdem das Fenster geschlossen wird die Schleife wiederholen, so dass man das Script als Endlosschleife laufen lassen kann.... vllt hab ihr ja eine bessere Idee... bin kein Programmierer / Scripter...


    bisher hab ich das:


    [autoit]

    $i=1
    while $i = 1
    if winactive ("AW:") OR winactive ("WG:") THEN
    send ("!o")
    send ("{Down}{Down}{Down}{ENTER}")
    Endif
    if winwaitclose ("AW:") OR winwaitclose ("WG:") Then
    Endif
    $i = 1
    WEnd

    [/autoit]

    Nun habe ich das selbe Problem bei winwaitclose, bei AW; funzt es, bei WG nicht.... winclose funktioniert nicht, da schließt er das fenster gleich wieder

  • Mit Outlook kenne ich mich nicht aus... deshalb habe ich nur kurz an deinem bestehenden Script rumgebastelt:

    [autoit]


    While ProcessExists("outlookdings.exe")

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

    If WinExists("AW:") Then

    WinWaitActive("AW:")
    send ("!o")
    send ("{Down}{Down}{Down}{ENTER}")
    WinWaitClose("AW:")

    ElseIf WinExists("WG:") Then

    WinWaitActive("WG:")
    send ("!o")
    send ("{Down}{Down}{Down}{ENTER}")
    WinWaitClose("WG:")

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

    EndIf

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

    Sleep(100)

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

    WEnd

    [/autoit]


    (ungetestet)

  • Hi,

    Danke, funktioniert gut.

    Allerdings habe ich ein Problem festgestellt.

    Wenn ich eine Antwort bekommen, will darauf antworten funktionierts nicht.


    Also die Email hat bereits den Titel AW: - ich öffne sie -> script läuft an aber kann nichts einstellen -> ich klicke auf Antworten (da ist jetzt die Stelle wo sonst anläuft) und dann macht er natürlich nichts, da er darauf wartet das das Fenster geschlossen wird um fortzufahren.

    Kann man da noch eine Schleife einbauen die das behebt? Sorry, bin kein Coder, Logik fehlt mir für sowas :D (systemintegrator :P )