ウィンドウが表示されているかどうかについて、自動車のwinwaitactiveケアを行う方法はありますか

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

  •  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

お役に立てれば。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top