C'è un modo per rendere la cura AutoIt WinWaitActive circa se una finestra è visibile
-
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?
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.