我想知道是否可以以编程方式向Dock图标选项(右键单击Dock图标时显示菜单)添加自定义命令。
有可能吗?我该如何实现?我可以使用Objective-C,而且我的目标是MacOS Mojave
谢谢
答案 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时延迟加载,而不是在启动时加载。