gpt4 book ai didi

objective-c - IconRef 来自的文件

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

有什么方法可以找到 IconRef 引用或加载的 .icns 文件吗?或者甚至是包含包的 ID(如果有的话)?

据我所知,并非所有图标都是直接从文件加载的(例如复合图标),因此这并不总是有效。

我试图回答的问题是“Finder 为文件 X 显示的图标来自哪里?”请注意,我对文件系统中图标的来源感兴趣,而不是图标的图像数据。据我所知,从文件路径到图标背后的工作原理 - 例如。 GetIconRefFromFileInfo 和 NSWorkspace.iconForFile - 相当不透明。

如果需要的话,我愿意接受无证/私有(private)解决方案。

@millenomi:是的,避免使用苹果图标是练习的重点。

最佳答案

Launch Services 具有用于遍历其 bundle 注册数据库的私有(private) API,您可以通过这种方式找到 .icns 文件。您可以使用 LaunchServices.framework/Support 中的 lsregister 工具查看此信息;使用 lsregister -dump 查看完整的数据库。

强制性的 UndocumentedGoodness 警告:如果您使用这些功能,您的应用迟早会崩溃。 (解析 lsregister -dump 的输出是一个更糟糕的主意!)

此外,您似乎也意识到了这一点,但无论如何我都会指出:并非所有图标都来自 .icns 文件。有些位于资源文件中,例如在旧式 Carbon 应用程序中。另一种情况是自定义(粘贴到Finder的信息窗口中)图标,它们是ID为-16455的一个或多个资源。 (经典图标位于“icl8”、“ics8”等类型的多个资源中,而现代图标位于“icns”类型的单个资源中。)

不幸的是,我还没有使用过这个私有(private) API,所以我无法更具体。

关于objective-c - IconRef 来自的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/600660/

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