gpt4 book ai didi

objective-c - 无需启动应用程序即可提供 OSX 服务?

转载 作者:行者123 更新时间:2023-12-03 16:31:20 25 4
gpt4 key购买 nike

我已经成功实现了“无脸服务”(带有 .service 扩展名的仅后台应用程序)并使其正常工作(请参阅 this question ),基于 Apple's documentation以及网络上的其他教程。

现在,我想通过我现有的单窗口 GUI 应用程序宣传一项服务。

我已经设置了应用程序的 Info.plist 文件来宣传该服务,并在构建应用程序时安装它。

但是当我从(例如)TextEdit.app 中的上下文菜单调用服务时(我的服务根据特定标准为所选文本着色),我的应用程序启动,主要更糟糕的是,我右键单击辅助监视器中的 TextEdit 窗口,因此我的应用程序的主窗口会立即出现在辅助监视器中,然后快速重新定位到主监视器中(这可能与我的窗口居中逻辑有关,但没关系......)。

我想提供服务(即在我的应用程序中提供提供服务的类实例化并执行其方法以响应请求),而我的应用程序不会出现在 Dock 上或显示其窗口和主菜单。

这可能吗? Safari 宣传“使用 Google 进行搜索”,所以这应该是可能的...

编辑:现在我想了一下,“Search With Google”每次都必须启动 Safari 才能工作,因此此评论不适用。

也许我可以在 -applicationWillFinishLaunching/-applicationDidFinishLaunching 中放入一些逻辑来确定应用程序是否正在响应服务而启动,并跳过创建窗口(注意OSX 中缺少 withOptions:)?

但是,这感觉还是不对。

最佳答案

它确实有一个蹩脚的 withOptions: 版本 - NSApplicationLaunchIsDefaultLaunchKey 告诉您应用程序是否启动到:

open or print a file, to perform a Service action, if the app had saved state that will be restored, or if the app launch was in some other sense not a default launch

因此,在您的 applicationDidFinishLaunching 中,您可以查看该键是否在通知中并设置为 NO。不幸的是,判断它是服务之外的可能性之一的主要方法是,您必须检测并记录您是否还获得了 application:openFile: 等。

关于objective-c - 无需启动应用程序即可提供 OSX 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27417916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com