C'è un modo per rendere la cura AutoIt WinWaitActive circa se una finestra è visibile

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

  •  09-10-2019
  •  | 
  •  

Domanda

Il mio script dovrebbe aspettare la finestra di dialogo "Select File" di IE ad apparire, poi farlo andare via e sostituirlo con un interfaccia del file di selezione personalizzata. Ho ottenuto tutto di lavoro, ma c'è una cosa che mi fastidioso. Il codice è il seguente:

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

Il problema sembra essere che la finestra di dialogo "Select File" è (invisibile) creato da IE, resa attiva, poi reso visibile. E 'un problema di fondo filettatura davvero:

In alcuni casi, IE rende la finestra attiva (ma non visibile ancora!). Le mie scelte di script che fino, Nasconde la finestra di dialogo (goduto in realtà è già nascosto), e poi IE rende i risultati di dialogo wich visibili in una finestra visibile (!).

C'è qualche possibilità che posso impostare wich rende il comando WinWaitActive attendere anche per la finestra l'essere visibile, non solo attiva?

È stato utile?

Soluzione

è possibile utilizzare la funzione di seguito per sapere se la finestra è visibile.

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

quindi è possibile utilizzare un ciclo come questo per fare quello che vuoi:

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

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top