1

我的脚本应该等待 IE 的“选择文件”对话框出现,然后让它消失并用自定义选择文件界面替换它。我已经完成了所有工作,但有一件事困扰着我。代码如下:

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

问题似乎是“选择文件”对话框(不可见)由 IE 创建,激活,然后可见。这确实是一个基本的线程问题:

在某些情况下,IE 使对话框处于活动状态(但还不可见!)。我的脚本选择了它,隐藏对话框(实际上已经隐藏),然后 IE 使对话框可见,从而导致可见对话框(!)。

有没有我可以设置的选项使 WinWaitActive 命令也等待窗口可见,而不仅仅是活动?

4

1 回答 1

2

您可以使用下面的功能来了解窗口是否可见。

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

希望这可以帮助。

于 2010-12-08T04:31:01.430 回答