【问题标题】:How to add a mac OS service item directly in the contextual menu instead of services submenu?如何直接在上下文菜单而不是服务子菜单中添加 Mac OS 服务项?
【发布时间】:2017-05-24 18:50:14
【问题描述】:

我正在为 mac OS 实现上下文服务。当您在支持服务的应用程序中选择文本时,会在服务菜单中添加一个新子项。我关注了Services Implementation Guide。

现在这按预期工作了。现在如何将服务菜单中的项目直接移动到上下文菜单中(这样用户就不必浏览服务并可以直接使用我的服务)?这可能吗?

编辑: 经过更多的研究,我仍然没有好转。例如,this SO answer 声称不能直接在菜单中添加上下文菜单项,只能通过服务。另一方面,this SO answer 声称这是可能的,并提供了一些有关进一步资源的链接 - 但是,其中链接的 sample code 不再出现在 Apple 网站上,并且链接的 tutorial 似乎已过时以及(它的所有资源都指向不存在的页面)。

【问题讨论】:

  • 这仍然必须以某种方式(OS 10.12)成为可能,因为 Sophos 和 Dropbox 似乎可以管理它......

标签: macos cocoa


【解决方案1】:

这与您的服务无关。如果有四个或更少的相关服务可用,服务将直接显示在 Finder 上下文菜单中,如果有五个或更多,则在子菜单中显示:

请注意,扩展的“服务​​”子菜单也已合并为通用右键菜单的一部分,因为它减少了 5 个项目。这是因为一旦给定文件、文件类型或文件夹有超过四个项目或服务选项可用时,“服务”部分就会成为它自己的专用子菜单,但如果项目少于五个,则“服务”菜单会融入到通用的右键单击菜单中操作系统。

-- http://osxdaily.com/2013/05/14/remove-services-contextual-menu-mac-os-x/

【讨论】:

  • 现在好吧,你的回答不是题外话,但是,它没有回答我的问题。无论特定用户启用了多少服务,我都希望我的上下文菜单项直接在上下文菜单中。
  • @MilanNosáľ 你不能。这就是我回答的重点。您的服务的显示方式基于用户的配置,没有办法覆盖它。
  • 但是那些插件呢?他们弃用了吗?
  • @MilanNosáľ 不再支持 64 位 Cocoa 的上下文菜单插件 (~/Library/Contextual Menu Items)。 Finder 自 macOS 10.6 以来一直是 64 位的,因此它失去了对 CM 插件的支持。已弃用,因为插件涉及将代码注入每个进程 - 损害系统稳定性和安全性
【解决方案2】:

在终端中运行以下命令:

defaults write -g NSServicesMinimumItemCountForContextSubmenu -int 999

然后重新启动要使用上下文菜单的应用程序。 信用:https://www.maketecheasier.com/edit-context-menu-macos/

我希望有一种方法可以将选定的(经常使用的)服务放入主上下文菜单,但到目前为止,唯一的解决方案似乎是全有或全无。

如果需要,您可以将 999 更改为更小的数字。这将改变阈值。系统默认我猜是4或5。

【讨论】:

    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多