Y at-il un moyen de rendre les soins WinWaitActive de AutoIt au sujet si une fenêtre est visible

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

  •  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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top