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

标签 objective-c macos applescript osx-lion

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

复制方法如下:

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

    tell application "Finder"
        return selection
    end tell
    

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

如果您重新聚焦窗口,或再次单击该文件,一切都会按预期进行,并且脚本会返回正确的路径。

这似乎是 Lion 中的一个错误。 Snow Leopard 在 100% 的时间内返回正确的路径。

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

  1. 使用脚本桥和 https://github.com/davedelong/BetterInfo/blob/master/Finder.h
  2. 使用“系统事件”苹果脚本点击“编辑”->“复制”
  3. 使用 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/

相关文章:

objective-c - 具有 Objective-C 选择器 'setTag' 的方法 'setTag:' 与具有相同 Objective-C 选择器的父类(super class) 'tag' 的 'UIView' 的 setter 冲突

ios - ReactiveCocoa replayLast : + take:1

ios - 如何让 block 立即并延迟一段时间后执行代码

java - 设置类路径

ios - Swift 中的内存管理 : memory don't released after NSOperation ends

iphone - UITableView reloadData 方法造成数据模糊的麻烦

phpize 不能在 Mac OS X Lion 上运行

bluetooth - Applescript检查何时完成蓝牙文件交换

python - 如何以编程方式创建和管理macOS Safari书签?

javascript - 优化图像以适应最大文件大小