2011-06-23 226 views
3

如何将自定义菜单项添加到Finder文件的上下文菜单中?将自定义菜单项添加到Finder上下文菜单

不幸的是,互联网和Stack Overflow上的大部分信息在10.6中不起作用,或者太有限了。例如,Automator不允许您动态创建项目或创建子菜单。

我知道仍然可以做这种事情,因为Dropbox和FolderGlance都可以做类似的事情。有谁知道他们是如何实现这一点的?

谢谢。

+2

我相当肯定的Dropbox使用[mach_inject]( https://github.com/rentzsch/mach_star)。至于你如何使用这个项目来完成这个......这也是我想要弄清楚的。 – livingtech

回答

2

我下载FolderGlance,它似乎使用osax(脚本加成)捆绑将代码注入的搜索过程。这绝对是脆弱和不受支持的。

据我所知,将项目添加到Finder上下文菜单的唯一合法方法是创建一个服务,但这并不能解决您的问题。

3

Dropbox现在使用mach_star进行代码注入。显然这是一个脆弱的解决方案。如果你仔细查看他们的版本历史,他们的许多更新都是为了修复查找器集成。

0

直到OS X 10.9.x只通过mach_inject向Finder进程注入代码是一个解决方案(甚至Dropbox也是这样做的)。 不过从10.10开始,就有Finder插件,它可以自定义上下文菜单,向工具栏添加按钮并在文件图标上放置覆盖。

0

您现在可以使用一个Finder同步扩展添加在OS X中的项目到Finder上下文菜单10.10约塞米蒂:

https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Finder.html

Finder Sync Extension in Context Menu

+0

嗨,在[docs](https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Finder.html#//apple_ref/doc/uid/TP40014214-CH15-SW1)中被提到你需要实现'menuForMenuKind:'方法将菜单种类作为参数传递给它。但它并没有说我应该在哪里调用带参数的方法,以及如何设置一个图标,就像你所做的一样。你可以请张贴一些示例代码吗?这将会非常有帮助。 – Isuru

+0

@Isuru当你实现'menuForMenuKind:'时,你将覆盖方法的默认实现。无需自己调用*方法... Finder会在需要时调用它,现在获取自定义菜单而不是默认值。请务必将新的Finder Sync Extension ** Target **添加到您的应用中。当你这样做时,Xcode会插入一堆你可以修改的样板代码。 – pkamb

相关问题