启动另一个应用程序的结果可以启动应用程序的程序机制是什么?
E.g。启动iTunes后,Last.fm桌面也会启动。
或者只是替换某种“批处理文件”的问题?
注意: OS X新手。
答案 0 :(得分:2)
没有标准的方法来指定依赖的应用程序。所以,你需要以某种方式观看系统。你不必积极地进行民意调查;你需要使用一些系统机制来告诉你。
要观看要启动的GUI应用,您需要编写后台应用,通过
获取NSWorkspace的通知中心NSNotificationCenter* nc=[[NSWorkspace sharedWorkspace] notificationCenter];
并注意NSWorkspaceDidLaunchApplicationNotification。请参阅Apple doc
。
要观看要启动的非GUI应用,您需要使用kqueue
。 (这是BSD功能。)请参阅man page。通常,您必须观看launchd
到fork
或execve
进程。请注意,有多个launchd
进程,一个用于root,一个用于每个登录用户。
在任何情况下,您都需要自动启动您编写的后台应用程序。有很多方法可以做到这一点。
要查看要更改的文件或目录,可以使用launchd
代理。请参阅man page。
顺便说一句:官方Last.fm
应用在首次启动时会在AudioScrobbler.bundle
内安装~/Library/iTunes/iTunes Plug-ins
。 iTunes在启动时读取所有插件,然后插件启动Last.fm应用程序。这是一个相当hackish,非宽容的界面用法,因为插件是为可视化工具。见Apple doc。