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

  • 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

  • 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