2011-06-23 222 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

相關問題