23

Dropbox 可以选择向 Finder 工具栏添加一个按钮。它甚至出现在“自定义工具栏...”窗口中。我找不到任何关于这种事情是如何完成的文档......有谁知道如何做到这一点,或者任何人都可以向我指出一些文档或示例代码吗?

编辑一:

我想首先要找到现有图标的位置以及任何相关代码。

我注意到 Dropbox 在 Library/DropboxHelperTools/Dropbox_u501 中有名为 mach_inject_bundle_stub.bundle 和 FinderLoadBundle 的文件,它们可能正在发挥作用。Dropbox 还在 Finder 图标上添加了“勾选”标志。可能涉及此代码:github.com/rentzsch/mach_star

编辑二:Rian Hunter 关于该过程的 Dropbox 谈话在这里,大约 15:30 http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-how-dropbox-did-它和如何-python-helped-4896698

查看 Dropbox_u501 中的 DropboxBundle 文件会显示图标和一些编译代码。代码表明 Rian Hunter 是作者:http: //twitter.com/timeserena

Rian 在他的 github 上有他自己版本的 Mach Star 代码 - https://github.com/rianhunter/mach_star - 虽然它看起来更老

编辑三

几周前在斯坦福大学举办了一个“代码注入研讨会” - http://stanfordacm.com/past/ - 由 Rian 主持。如果有人对此有笔记,请告诉我!

4

4 回答 4

10

您可以使用 Finder Sync应用程序扩展(从 OS X v10.10 开始)。

Finder Sync 扩展可以:

  • 在受监控文件夹中的项目上添加、删除和更新徽章和标签。
  • 当用户按住 Control 键单击受监视文件夹内的项目时,显示上下文菜单。
  • 将自定义按钮添加到 Finder 的工具栏。
于 2015-02-11T12:46:03.500 回答
8

Dropbox 使用的是无证魔法。没有官方支持的方式来做到这一点。如果没有逆向工程,您可以获得的最接近的是Services

(更新:从 macOS 10.11 开始,Dropbox 所做的一切不再可能。系统完整性保护现在可以防止代码被注入到系统进程中,例如 Finder。)

于 2011-12-05T05:43:09.537 回答
2

Rian 在 PyCon 2011 上的演讲(在 blip.tv 上)只解释了“我们对 Finder 进行了逆向工程”。尽管 mach_star 的东西很有价值,但它仍然没有解释如何让侧边栏图标工作。而斯坦福“代码注入研讨会”也没有发布任何关于这种方法的内容。

我已经 nm'd 和 class-dump'd Dropbox 在 /Library/DropboxHelperTools 下为每个用户安装的两个捆绑包,并且输出提供了很好的洞察力。如果我回到它,我会完成我的研究并发布它。奇怪的是,它不会有一段时间了,所以这里希望这个轻推可以帮助其他人。

于 2013-02-26T13:31:09.440 回答
1

对某些人来说可能足够的简单中间答案是简单地创建看起来像按钮的图标。

例如,我为我的 Finder 创建了“此处的新文本文件”和“此处的新终端图标”:

在此处输入图像描述

该方法可以在这里找到。

缺点是它们必须是方形的并且没有动画/菜单或显示在“自定义工具栏”等中。

于 2013-12-04T10:37:14.193 回答