【问题标题】:How to determine when the Select File Dialog is active?如何确定选择文件对话框何时处于活动状态?
【发布时间】:2020-08-26 22:39:54
【问题描述】:

我正在尝试确定文件选择对话框何时处于活动状态,但我不能。

SetTitleMatchMode,1
FileSelectFile, SelectedFile
Winwaitactive,Select File - 
Msgbox,File Select Dialog is active    ; This is never fired
if (SelectedFile = "")
    MsgBox, The user didn't select anything.
else
    MsgBox, The user selected the following:`n%SelectedFile%

你能告诉我我做错了什么吗?

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    在该线程上,代码执行在FileSelectFile 行停止,直到选择了一个文件。因此,您的代码将永远无法通过 WinWaitActive 命令,因为在该命令运行时,您尝试匹配的窗口已不再打开。
    by the looks of things,您不能在不破坏FileSelectFile 命令功能的情况下中断该线程。
    因此,如果没有真正的多线程,您要尝试做的确切事情是不可能的。

    但也许你可以做一个这样的简单假设:

    MsgBox, % "File select will begin after you click OK"
    FileSelectFile, output
    MsgBox, % "File select ended"
    

    【讨论】:

    • 感谢您的解释。您能否确认不能在 XP/2003 之后的 Windows 的“我的电脑”视图上启动 FileSelectFile 对话框?这就是为什么我希望获得活动选择对话框,然后关注地址字段并粘贴“我的电脑”CLSID。恐怕现在没有解决方案。感谢您的帮助。
    • 我认为有一些方法可以做到这一点,但我没有任何信息。但是,是的,文档似乎确实指定您不能只为该命令输入 CLSID。必须用 DllCalling 定制一些东西。因此,对于使用默认的FileSelectFile 命令,我很确定您唯一的解决方案是多线程(启动另一个脚本,专注于地址字段并为您导航,或使用 AHK_H)
    • 感谢您提供详细信息。非常感激。我会尝试用第二个脚本来做这个。祝你一切顺利!
    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2011-05-02
    • 1970-01-01
    • 2014-11-07
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多