gpt4 book ai didi

objective-c - 如何确定我的 Cocoa Desktop 应用程序是否位于登录时打开的应用程序列表中?

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

我正在开发沙盒 Cocoa 应用程序。我已经使用 Core Foundation 功能成功实现了登录时启动功能:

SMLoginItemSetEnabled

我的实现基于This tutorial

但现在我需要一种方法来确定我的应用程序是否设置为在登录时启动,以便我可以在启动时在适当的位置显示按钮。我希望有一个类似的 Core Foundation 函数来查找包标识符是否在登录项列表中,但我没有找到它。

另一个问题是,通过使用这种 Core Foundation 方法,尽管 Apple 推荐,但我的应用程序仍然与应用程序停靠菜单中的“登录时打开”勾选不一致。

最佳答案

您可以使用 LSSharedFileList.h header 中的函数来完成此操作,该 header 位于 LaunchServices.framework 中,而该 header 位于 CoreServices.framework 中。据我所知,除了标题注释之外,苹果还没有记录这些内容,但这可能就足够了。基本概要是,您首先使用函数 LSSharedFileListCreate 为列表类型 kLSSharedFileListSessionLoginItems 创建一个 LSSharedFileListRef。然后使用LSSharedFileListCopySnapshot复制列表的快照(这是一个CFArrayRef)。然后,对于数组中的任何项目,您可以使用 LSSharedFileListItemCopyResolvedURL 获取其 URL。最后一个功能需要 Mac OS X 10.10 或更高版本,而我认为其他功能可以追溯到 10.5。

顺便说一句,SMLoginItemSetEnabled 上的文档说它用于将嵌入式帮助程序应用程序设置为登录项,但听起来您正在谈论一个独立的应用程序。

Apple's sandbox documentation说:

With App Sandbox, you cannot create a login item using functions in the LSSharedFileList.h header file. For example, you cannot use the function LSSharedFileListInsertItemURL.

但也许您仍然可以以只读方式使用共享文件列表功能。

关于objective-c - 如何确定我的 Cocoa Desktop 应用程序是否位于登录时打开的应用程序列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31909095/

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