Y at-il un moyen de rendre les soins WinWaitActive de AutoIt au sujet si une fenêtre est visible
-
09-10-2019 - |
Question
Mon script est censé attendre la boîte de dialogue « Sélectionner Fichier » de IE à apparaître, puis la faire disparaître et le remplacer par une interface de sélection de fichier personnalisé. J'ai eu tout travail, mais il y a une chose me lancinante. Le code est le suivant:
WinWaitActive("Select File")
WinSetState("Select File", "", @SW_HIDE)
Le problème semble être que la boîte de dialogue « Sélectionner le fichier » est (invisiblement) créé par IE, fait actif, puis rendu visible. Il est un problème de filetage de base vraiment:
Dans certains cas, IE rend le dialogue actif (mais pas encore visible!). Mon choix de script qui vous, Hides la boîte de dialogue (Wich est en fait déjà caché), puis IE rend les résultats de Wich visibles de dialogue dans une boîte de dialogue visible (!).
Y at-il une option que je peux définir Wich fait la commande WinWaitActive également attendre la fenêtre l'être visible, non seulement actif?
La solution
vous pouvez utiliser la fonction ci-dessous pour savoir si la fenêtre est visible.
Func IsWindowVisible($handle)
If BitAnd(WinGetState($handle), 2) Then
Return 1
Else
Return 0
EndIf
EndFunc
vous pouvez utiliser une boucle comme celui-ci pour faire ce que vous voulez:
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 this helps.