Mit Autoit Popupfenster von Programmen beantworten

  • hallo autoit-Könner , nutze Autoit nur sporadisch und möchte mit diesem ein innerhalb eines Anwendungsprogrammes aufpoppendes Fenster mit Ja- Nein Abfrage automatisch mit Ja beantworten. Bei der zyklischen Abfrage mit IfWinExists(" -") verliert das Hauptfenster den Focus und müsste per Klick erneut aktiviert werden . Wie lässt sich dieses verhindern ? Die Funktion sollte so lange das Hauptprogramm aktiv ist ,einfach im Hintergrund laufen ohne wesentliche Ressourcen zu verbrauchen . Ein Möglichkeit wäre mit dem Windows- Taskmanager das Programm immer erneut zu starten , aber gibt es nicht auch eine Möglichkeit innerhalb von autoit ? Dankbar für Hinweis oder Link zur Problemlösung .

  • Hi und Willkommen im forum!

    Einfach nachdem If WinExists ein WinActivate einbauen :) Sollte klappen wenn ich das richtig verstanden habe ^^

    Im Notfall poste einfach einmal deinen Source!


    Mfg Lenny

    Jaja, Moo does the Cow!

  • Leider ist die Situation noch etwas komplexer Programm A- ruft Programm B auf ,dieses übergibt Info an Programm A zurück , welches mit dem Popup- fenster antwortet . Es gibt also nicht nur ein offenes Fenster sondern deren mindestens 2 die wechselseitig kommunizieren . Das Programm A zu Aktivieren wenn eigentlich Programm B im Focus stand wäre nicht sinnvoll

  • Vielleicht etwas in der Art:
    [autoit]

    While 1
    If WinExists("popup__von_A") Then
    WinActivate("popup_von_A")
    Send("!j")
    Winactive("Anwendung_B")
    Endif
    WEnd

    [/autoit]
  • Hallo hier ist der Quellcode mit dem die Fenster den Focus verlieren

    AutoItSetOption("WinTitleMatchMode", 4)
    AutoItWinSetTitle("Reminder")
    WinSetState("Reminder", "", @SW_HIDE)
    wait()

    func wait ()
    WinSetState("Reminder", "", @SW_HIDE)
    sleep(500)
    click()
    EndFunc

    func click()
    If Winexists("classname=#32770") Then
    sleep(100)
    WinActivate("classname=#32770")
    ControlClick("","Ja","Button1")
    wait()
    EndIf
    wait()
    EndFunc
    Exit


    Hier der 2. Code ohne wechselnden Focus worin besteht der Unterschied ?


    Opt("WinTitleMatchMode", 4)
    prog1()

    func prog1()
    If WinExists("test1.txt") Then
    ;MsgBox(0, "", "Window Test1 exists")
    sleep(500)
    prog2()
    EndIf
    sleep (500)
    EndFunc

    func prog2()
    If WinExists("test2.txt") Then
    ;MsgBox(0, "", "Window Test2 exists")
    sleep(500)
    prog1()
    EndIf
    sleep (500)
    EndFunc

    Exit


    Wie lässt sich der Unterschied erklären ?? oder abstellen