gpt4 book ai didi

cocoa - 以编程方式确定事件应用程序的 .icns 文件 (OS X)

转载 作者:行者123 更新时间:2023-12-03 16:53:02 26 4
gpt4 key购买 nike

问题摘要:

  1. 如何获取 OS X 下当前事件应用程序的路径? (即拥有当前关键窗口的应用程序)

  2. 由此,我需要确定该应用程序通常关联的 .icns 文件(即,当您在“应用程序”文件夹中查看该应用程序时,以及在出现的应用程序列表中查找该应用程序时显示的图像)你按下命令(苹果)Tab键)

详细问题描述:

我正在开发一个 OS X 实用程序工具栏( float 窗口),它需要显示当前应用程序的名称和图标图像(例如,拥有当前“关键”窗口的应用程序。

  1. 我需要某种方式以编程方式确定当前主应用程序和关键应用程序的“.app 文件夹的路径”。这可以通过通知回调,或者我可以轮询计时器并触发我自己的回调。

  2. 我可以看到,在 XXX.app/Resources 文件夹中手动查找 .icns 文件相对容易,但问题是该文件夹中有时有超过 1 个 .icns 文件 - 而且我发现这并不容易仅从文件名确定哪个是通常与应用程序关联的正确图标的方法 - 虽然许多应用程序使用与应用程序相同的名称(带有 icns 扩展名),但有些则不然。

例如,safari 有一个完全不相关的名称“compass.icns”。一定有一个文件告诉 finder 使用哪个文件 - 或者一个 api 调用来执行此操作,有人有任何想法吗? NSApplication 有 applicationIconImage 方法,它显然返回我的应用程序的图标 - 这不是我想要的 - 据我所知,没有办法为另一个应用程序实例化 NSApplication,并且像大多数方法一样这样做没有任何实际意义/properties 是该应用程序私有(private)的内容。

无论如何,我正在将 Windows 实用程序移植到 OS X - 如果我在 Windows 下执行此操作,我将使用 GetWindowProcessID(GetForegroundWindow)),并使用它来确定应用程序的路径,并提取图标使用 LoadIcon 得出的结果

最佳答案

所有这些方法都位于 NSWorkspace 中类(class)。您可以获得事件应用程序及其图标图像(没有 icns 文件)。检查上述类的文档,您应该很清楚:

NSDictionary *activeAppDict = [[NSWorkspace sharedWorkspace] activeApplication];
NSString *activeApplicationPath = [activeAppDict valueForKey:@"NSApplicationPath"];
NSImage *activeAppImage = [[NSWorkspace sharedWorkspace] iconForFile:activeApplicationPath];

关于cocoa - 以编程方式确定事件应用程序的 .icns 文件 (OS X),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6087223/

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