Dialogboxen bestätigen

  • Hallo!

    Ich habe einfe Frage zu ControlClick

    Wie finde ich die controlID eines Buttons von einem Dialogfenster heraus? das Fenster erscheint von einem beliebigen Programm.

    mfg

  • Über das Tool "AutoIt Window Info".
    Aber es kann PRobleme geben, wenn sich die ID ändert. Es gibt Programme, die ohne feste IDs arbeiten.
    Evtl. trifft das hier auch zu, wenn das Fenster von beliebigen Programmen geöffnet werden kann.
    Das musst Du halt ausprobieren.

  • danke für die rasche Antwort

    da hab ich mich falsch ausgedrückt, das Fenster wird grundsätzlich nur von einem Programm aufgerufen, aber es kann zu verschiedenen Zeitpunkten kommen.Also hilft mir dass schon weiter.
    aber ich habe noch ein Problem.

    wenn ich das skript so aufbaue bei 3 verschiedenen dialogboxen:

    if WinExists("...") = 1 then
    winactivate("...")
    Send("Enter")
    EndIf

    if WinExists("---") = 1 then
    winactivate("---")
    Send("Enter")
    EndIf

    if WinExists("!!!") = 1 then
    winactivate("!!!")
    Send("Enter")
    EndIf

    dann arbeitet der Prozess ständig durch, dass ist nicht mein Ziel.
    Die 3 Dialogboxen können zu einem unterschiedlichen Zeitpunkt erscheinen dass ist damit realisiert, gibt es aber auch eine möglichkeit den Prozess so zu
    verändern, dass es ca so funktioniert:

    WinWait(...)
    winactivate(...)
    send("{Enter}")

    WinWait(---)
    winactivate(---)
    send("{Enter}")

    WinWait(!!!)
    winactivate(!!!)
    send("{Enter}")

    jetzt arbeitet zwar der Prozess nicht ständig, aber es kann sein, dass ich irgendwo stecken bleibe falls ein Fenster nicht erscheint.

    mfg

  • Wie Du selbst schon bemerkt hast, gibt das Probleme, wenn ein Fenster nicht erscheint.
    Wo liegt eigentlich das Problem, dass Script die ganze Zeit laufen zu lassen?
    Dein erstes Script würde einwandfrei funktionieren.

  • die Performance am Rechner ist mir wichtig.

    wenn ich mehrere solceh Prozesse erstelle, für unterschiedliche Programme, dann geht das auf lasten der Performance,
    in wie weit es sich auswirkt weiß ich noch nicht, aber falls es eine so elegante Lösung gibt wär mir die lieber.

  • Du könntest eine While-Schleife mit einem Sleep-Befehl machen.
    Durch den Sleep-Befehl geht die Auslastung runter.
    Da reichen schon 1 oder 2 Sekunden.

  • naja,da wäre dann die für die Performance schönere Variante, dass ich für jeden Dialog einen eigenen Prozess mache
    hab ich dann halt 15 Prozesse mehr aber dann würds mit winwait und winactivate funktionieren.

  • einfach so?

    [autoit]

    While $installfinished = False
    If Winactive("deinfenster") Then Send("{Enter}")
    sleep(200) ;für deine performance
    WEnd

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D