我已经确认这只发生在 Lion 中。我发现了一个似乎是错误的地方,您需要将一个窗口聚焦两次,以便 Finder 通过脚本桥或 AppleScript 返回正确的结果。这仅在从桌面或其他空间打开文件夹时发生。
复制方法如下:
- 关闭、隐藏或最小化所有窗口,直到显示桌面。
- 打开桌面上的任意文件夹,将出现一个新的查找器窗口。通过单击一次选择该查找器窗口中的任何文件。
打开 AppleScript 编辑器并运行以下脚本:
tell application "Finder" return selection end tell
脚本将仅返回桌面上文件夹的路径,而不是在查找器窗口中返回所选文件。
如果您重新聚焦窗口,或再次单击该文件,一切都会按预期进行,并且脚本会返回正确的路径。
这似乎是 Lion 中的一个错误。 Snow Leopard 在 100% 的时间内返回正确的路径。
我已经尝试了以下方法但没有成功:
- 使用脚本桥和 https://github.com/davedelong/BetterInfo/blob/master/Finder.h
- 使用“系统事件”苹果脚本点击“编辑”->“复制”
- 使用 AppleScript 从查找器中获取当前选择。
似乎所有人都有同样的问题。
我是否漏掉了一些明显的东西,或者这真的是 Lion 的问题吗?
最佳答案
哇,我可以确认(至少通过 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
关于objective-c - 在 OS X Lion 中,向 Finder 询问当前选择,返回错误的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8435802/