ウィンドウが表示されているかどうかについて、自動車のwinwaitactiveケアを行う方法はありますか
-
09-10-2019 - |
質問
私のスクリプトは、IEの[ファイルの選択]ダイアログが表示されるのを待ってから、それを消し去ってカスタム選択ファイルインターフェイスに置き換えることになっています。私はそれをすべて機能させましたが、私をしつこくしていることが1つあります。コードは次のとおりです。
WinWaitActive("Select File")
WinSetState("Select File", "", @SW_HIDE)
問題は、「ファイルの選択」ダイアログは(目に見えないほど)IEによって作成され、アクティブになっていることです。 それから 目に見える。それは本当に基本的なスレッドの問題です:
場合によっては、IEはダイアログをアクティブにします(ただし、まだ表示されていません!)。私のスクリプトはそれを拾います、 皮 ダイアログ(実際にはすでに隠されています)、つまり、ダイアログの結果を表示するダイアログ(!)にダイアログを表示します。
Winwaitactiveコマンドを設定できるオプションはありますか?また、アクティブではなく、ウィンドウが表示されるのを待っていますか?
解決
以下の関数を使用して、ウィンドウが表示されているかどうかを知ることができます。
Func IsWindowVisible($handle)
If BitAnd(WinGetState($handle), 2) Then
Return 1
Else
Return 0
EndIf
EndFunc
次に、このようなループを使用して、必要なことを行うことができます。
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
お役に立てれば。
所属していません StackOverflow