¿Hay una manera de hacer que la atención AutoIt WinWaitActive sobre si una ventana es visible

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

  •  09-10-2019
  •  | 
  •  

Pregunta

Mi script se supone que debe esperar a que el cuadro de diálogo "Seleccionar archivo" del IE a aparecer, a continuación, hacer que desaparezca y reemplazarlo con un interfaz de selección de archivo personalizado. He conseguido todo de trabajo, pero hay una cosa que me molesta. El código es el siguiente:

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

El problema parece ser que el cuadro de diálogo "Seleccionar archivo" es (invisible), creado por el IE, hizo activo, después hace visible. Es un problema de fondo roscado realmente:

En algunos casos, es decir hace que el diálogo activo (pero aún no visible!). Mis selecciones de script que arriba, Pieles el cuadro de diálogo (wich en realidad ya está oculto), y luego IE hace que los resultados visibles wich de diálogo en un cuadro de diálogo visible (!).

¿Hay alguna opción que pueda establecer wich hace que el comando WinWaitActive también esperar a que la ventana de la razón de ser visible, no sólo activa?

¿Fue útil?

Solución

Puede utilizar la función de abajo para saber si la ventana es visible.

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

A continuación, se puede utilizar un bucle como este para hacer lo que desee:

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

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top