Gibt es eine Möglichkeit AutoIt WinWaitActive kümmern uns um, wenn ein Fenster sichtbar zu machen ist

StackOverflow https://stackoverflow.com/questions/4382145

  •  09-10-2019
  •  | 
  •  

Frage

Mein Skript soll für die „Select File“ -Dialog von IE warten, um zu erscheinen, dann machen sie gehen weg und ersetzen sie durch eine benutzerdefinierte Datei auswählen Schnittstelle. Ich habe sie alle Arbeits bekommen, aber es ist eine Sache, mich zu nörgeln. Der Code ist wie folgt:

WinWaitActive("Select File")
WinSetState("Select File", "", @SW_HIDE)

Das Problem scheint zu sein, dass die "Select File" -Dialog ist (unsichtbar) von IE erstellt, aktiv gemacht, und sichtbar gemacht. Es ist ein Grund threading Problem wirklich:

In einigen Fällen macht IE den Dialog aktiv ist (aber noch nicht sichtbar!). Mein Skript nimmt das auf, Verkleinert der Dialog (Wich ist eigentlich schon versteckt) und dann IE macht den Dialog sichtbar Weichen Ergebnisse in einem sichtbaren Dialog (!).

Gibt es eine Möglichkeit, die ich setzen kann Weichen der Befehl WinWaitActive macht auch für das Fenster wartet die sichtbar sein, nicht nur aktiv?

War es hilfreich?

Lösung

können Sie die Funktion unten wissen, ob das Fenster sichtbar ist.

Func IsWindowVisible($handle)
    If BitAnd(WinGetState($handle), 2) Then 
        Return 1
    Else
        Return 0
    EndIf
EndFunc

dann können Sie eine Schleife wie diese verwenden zu tun, was Sie wollen:

While 1
    If IsWindowVisible(FindWindow("Select File", "")) Then ; I'm not sure about FindWindow syntax
        WinSetState("Select File", "", @SW_HIDE)
        Break
    Else
        Sleep (1000)
    EndIf
EndWhile

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top