Abfrage externes Fenster für Schleife

  • Hallo AutoIT´ler,

    ich möchte mit AutoIT ein externes Programm fernsteuern. Ein Teil der Schleife, der noch nicht so funktioniert wie ich das gerne hätte, ist im Spoiler.
    Es taucht am fraglichen Punkt ein Speicher-Fenster auf. Je nach Entscheidung für "Save" oder "Cancel" soll die Schleife weitergehen oder eben nicht.
    Jetzt weiß ich aber leider nicht, wie man den Pfad zum externen Fenster bzw. den dortigen Werten für "Ja"/ "Nein" angeben soll...

    Danke vorab für die Hilfe!


    Spoiler anzeigen
    [autoit]

    WHile true

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

    Send("!f")
    Send("!r")
    WinWaitActive("Impulse response measurement")
    Send("!r")
    WinWaitClose("Impulse response measurement")

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

    ;;; die Messung wurde aufgezeichnet und soll nun gespeichert werden

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

    Send("!f")
    Send("s")
    WinWait("Save As","FolderView")
    Send("Dateiname ABC")

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

    ;;; hier soll die Abfrage erfolgen, ob im externen Fenster "Ja" oder "Nein" gewählt wurde
    ;;; bei "Ja" sollen die folgenden Befehle kommen, bei "Nein" soll die Schleife neu starten

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

    WinWaitClose("Save As","FolderView")
    Send("!o")
    Send("a")

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

    WEnd

    [/autoit]
  • Hallo 00-Schneider,
    vielleicht solltest Du versuchen, mithilfe des AuoItWindowInfoTools, die entsprechenden Handles auszulesen.
    Diese könntest Du dann mit den entsprechenden Funktionen abfragen und dann in der Schleife eine Fallunterscheidung durchführen.
    Du könntest auch versuchen, eine Nachricht des Programms "abzufangen", die darüber Aufschluss gibt, welcher Button gedrückt wurde.
    Genauso wäre es vermutlich möglich, mithilfe der Mouse-Funktionen (MouseGetPos) einen Klick im entsprechenden Koordinaten-Bereich abzufragen und entsprechend zu verarbeiten.

  • Eine Abfrage über _ispressed oder dergleichen funktioniert ja leider nicht, weil damit nur Aktionen auf der Tastatur, Maus usw. überwacht werden können. Wenn man als Ziel die jeweils ausgelesene Schaltfläche angibt, passiert leider... nichts!

  • Wieso musst du denn unbedingt den Button abfragen?
    Das geht wahrscheinlich auch leichter.
    Je nachdem ob Ja oder Nein gedrückt wird kommen doch wahrscheinlich unterschiedliche Fenster oder es wird in eine Datei geschrieben oder ...
    Das wäre es wahrscheinlich leichter abzufragen als einen externen Button

    Außerdem würde ich dir empfehlen die Send() Befehle durch Controlsend() zu ersetzen. Dann bekommst du keine Probleme falls ein anderes Fenster im Vordergrund ist.