在OS X Lion中,向Finder询问当前选择,返回错误的文件

Lev*_*ink 6 macos applescript objective-c osx-lion

我已经确认这只发生在Lion.我发现了一个似乎是一个需要将窗口聚焦两次的错误,以便Finder通过脚本桥或AppleScript返回正确的结果.仅当从桌面或其他空间打开文件夹时才会发生这种情况.

这是复制的方法:

  1. 关闭,隐藏或最小化所有窗口,直到桌面显示.
  2. 打开桌面上的任何文件夹,将出现一个新的查找程序窗口.通过单击一次选择该查找程序窗口中的任何文件.
  3. 打开AppleScript编辑器并运行以下脚本:

    tell application "Finder"
        return selection
    end tell
    
    Run Code Online (Sandbox Code Playgroud)

该脚本将返回桌面上文件夹的路径,而不是查找器窗口中的选定文件.

如果重新聚焦窗口,或再次单击该文件,一切都按预期工作,脚本返回正确的路径.

这似乎是Lion中的一个错误.Snow Leopard 100%的时间都会返回正确的路径.

我尝试了以下方法但没有成功:

  1. 使用脚本桥和https://github.com/davedelong/BetterInfo/blob/master/Finder.h
  2. 使用"系统事件"苹果脚本单击"编辑" - >"复制"
  3. 使用AppleScript从取景器中获取当前选择.

所有人似乎都有同样的问题.

我错过了一些明显的东西,或者这真的是狮子的问题?

reg*_*633 1

哇,我可以确认(至少通过 applescript)你所描述的大部分内容。我收到一个空列表返回,甚至没有您提到的桌面路径。我正在使用 applescript 菜单中的脚本对此进行测试。我可以从新的 Finder 窗口中进行选择的唯一方法是这样的......

tell application "System Events" to activate
tell application "Finder"
    activate
    set a to (get selection) as text
    display dialog a
end tell
Run Code Online (Sandbox Code Playgroud)