【发布时间】:2011-08-30 13:00:45
【问题描述】:
问题总结:
如何在 OS X 下获取当前活动应用程序的路径? (即拥有当前关键窗口的应用程序)
据此,我需要确定该应用程序的正常关联 .icns 文件(即,当您在“应用程序”文件夹中查看该应用程序时 finder 显示的图像,以及出现你按下命令(苹果)tab键)
详细问题描述:
我正在开发一个 OS X 实用工具栏(浮动窗口),它需要显示当前应用程序的名称和图标图像(例如,拥有当前“关键”窗口的应用程序。
我需要某种方式以编程方式确定当前主要和关键的应用程序的“.app 文件夹的路径”。这可以通过通知回调,或者我可以在计时器上轮询并触发我自己的回调。
我可以看到在 XXX.app/Resources 文件夹中手动查找 .icns 文件相对容易,但问题是该文件夹中有时会有超过 1 个 .icns 文件 - 我看不出容易仅从文件名确定哪个是通常与应用程序关联的正确图标的方法 - 虽然许多应用程序使用与应用程序相同的名称(带有 icns 扩展名),但有些则没有。
例如,safari 有一个完全不相关的名称“compass.icns”。某处必须有一个文件告诉 finder 使用什么文件 - 或者一个 api 调用来执行此操作,有人有什么想法吗? NSApplication 有 applicationIconImage 方法,它显然会返回我的应用程序的图标 - 这不是我想要的 - 据我所知,没有办法为另一个应用程序实例化 NSApplication,并且像大多数方法一样这样做没有真正意义/properties 是该应用程序私有的东西。
为了它的价值,我正在将一个 windows 实用程序移植到 OS X - 如果我在 windows 下执行此操作,我将使用 GetWindowProcessID(GetForegroundWindow)),并使用它来确定应用程序的路径,并提取图标从那个使用 LoadIcon
【问题讨论】:
标签: cocoa macos operating-system