MacOSX将命令添加到Dock图标

时间:2019-02-23 11:26:51

标签: objective-c macos cocoa right-click dock

我想知道是否可以以编程方式向Dock图标选项(右键单击Dock图标时显示菜单)添加自定义命令。

有可能吗?我该如何实现?我可以使用Objective-C,而且我的目标是MacOS Mojave

谢谢

2 个答案:

答案 0 :(得分:0)

有多种方法,一种是在@echo off set "WCONV=C:\Program Files\Microsoft Office\root\Office16\Wordconv.exe" FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F FOR %%X in (*.doc) DO ( echo "%%F\%%X" %WCONV% -oice -nme "%%X" "%%Xx" && del "%%X" ) popd ) 的{​​{1}}中分配NSMenu

第二个选项是使用xib文件和applicationDockMenu:。这是Xamarin的教程,但在任何框架中都相似:https://docs.microsoft.com/en-us/xamarin/mac/user-interface/menu

答案 1 :(得分:0)

使用NSApplicationDelegat方法applicationDockMenu(_:)

optional func applicationDockMenu(_ sender: NSApplication) -> NSMenu?
  

允许委托人为应用程序动态提供停靠菜单。

     

讨论

     

您还可以将Interface Builder中的菜单连接到dockMenu插座。应用程序指定停靠菜单的第三种方法是在笔尖中提供NSMenu。

     

如果此方法返回菜单,则此菜单优先于笔尖中的dockMenu。

     

每个菜单项的目标和操作都传递到扩展坞。选择菜单项后,停靠消息将向您的应用程序发送消息,应用程序应调用[NSApp sendAction:selector to:target from:nil]。

     

要在笔尖中指定NSMenu,请使用AppleDockMenu键将笔尖名称添加到info.plist中。指定的笔尖名称不带扩展名。然后,您可以创建一个从文件所有者对象(默认为NSApplication)到菜单的连接。将菜单连接到NSApplication的dockMenu出口。该菜单位于其自己的nib文件中,因此可以在请求dockMenu时延迟加载,而不是在启动时加载。