create system service menu

官方文檔介紹地址:

1:系統服務Menu

(https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/SysServices/Articles/menu.html#//apple_ref/doc/uid/20000851-BBCDFIDD)


2:如何服務定義屬性(https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/SysServices/Articles/properties.html)


3:實現服務的所需的方法(https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/SysServices/Articles/providing.html)


4:提交,測試

/System/Library/CoreServices/pbs -dump

/System/Library/CoreServices/pbs -update


代碼:

實際實現後的效果






2:在你創建的應用程序info.plist中添加,如圖所示:



Instance method name對應的uninstallApp就是該服務會執行的類中的方法名,例如:

  • (void)uninstall:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error{};

Menu item title 對應的Uninstall With XX就是對應的顯示在Menu中的名字


NSSendFileTypes 對應的com.apple.application 限定了當前註冊的該服務能夠讀取的類型,只有在鼠標右鍵在應用程序上時,彈出的Menu菜單纔會顯示出當前應用程序註冊的服務,如:Uninstall With XX


NSRequiredContext 指定一個約束字典,在那種情況下這個服務才顯示給用戶,或者你也可以爲一個數組。


詳細說明見 2:如何服務定義屬性


3:實現服務所用的方法



4:提交,測試

在實現服務的類中添加

[NSApp setServicesProvider:self];

NSUpdateDynamicServices();

 

總之將服務的提供者設置爲你實現服務方法的類就對了,然後更新服務。


1:運行程序,在終端輸入 

/System/Library/CoreServices/pbs -update 回車 (這個也是讓系統更新服務而已)


然後:

/System/Library/CoreServices/pbs -dump (顯示系統已有的那些服務)


就能查看到你服務的屬性,然後點擊鼠標右鍵,測試。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章