如何在OS X上启动依赖应用程序?

时间:2010-05-11 17:12:41

标签: macos launching-application

启动另一个应用程序的结果可以启动应用程序的程序机制是什么?

E.g。启动iTunes后,Last.fm桌面也会启动。

或者只是替换某种“批处理文件”的问题?

注意: OS X新手。

1 个答案:

答案 0 :(得分:2)

没有标准的方法来指定依赖的应用程序。所以,你需要以某种方式观看系统。你不必积极地进行民意调查;你需要使用一些系统机制来告诉你。

要观看要启动的GUI应用,您需要编写后台应用,通过

获取NSWorkspace的通知中心
NSNotificationCenter* nc=[[NSWorkspace sharedWorkspace] notificationCenter];

并注意NSWorkspaceDidLaunchApplicationNotification。请参阅Apple doc

要观看要启动的非GUI应用,您需要使用kqueue。 (这是BSD功能。)请参阅man page。通常,您必须观看launchdforkexecve进程。请注意,有多个launchd进程,一个用于root,一个用于每个登录用户。

在任何情况下,您都需要自动启动您编写的后台应用程序。有很多方法可以做到这一点。

要查看要更改的文件或目录,可以使用launchd代理。请参阅man page

顺便说一句:官方Last.fm应用在首次启动时会在AudioScrobbler.bundle内安装~/Library/iTunes/iTunes Plug-ins。 iTunes在启动时读取所有插件,然后插件启动Last.fm应用程序。这是一个相当hackish,非宽容的界面用法,因为插件是为可视化工具。见Apple doc