2010-05-11 42 views
0

在另一个应用程序启动时可以启动应用程序的程序机制是什么?如何在OS X上启动依赖应用程序?

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

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

说明: OS X新手。

回答

2

有没有标准的方式来指定一个从属应用程序。所以,你需要以某种方式观看系统。你不必积极投票;你需要使用一些系统机制来告诉你。

要监视一个GUI应用程序来启动,你需要写一个后台程序,由

NSNotificationCenter* nc=[[NSWorkspace sharedWorkspace] notificationCenter]; 

得到NSWorkspace的通知中心,并观看NSWorkspaceDidLaunchApplicationNotification。请参阅Apple doc

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

无论如何,您需要自动启动您编写的后台应用程序。有很多方法可以做到这一点。

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

顺便说一句:官方Last.fm应用程序在其首次启动时,在~/Library/iTunes/iTunes Plug-ins内安装AudioScrobbler.bundle。 iTunes在启动时读取所有插件,然后该插件启动Last.fm应用程序。这是一个相当不合理的用法,因为插件是用于可视化器的。见Apple doc

+0

我无法弄清楚如何从你所指的手册页做到这一点。你可以扩展这个吗? 但是对于“last.fm”概要文件+1! – jldupont 2010-05-11 23:55:58

+0

啊,对于输入混淆信息感到抱歉...'launchd'代理可以监视目录中新文件的外观,但它无法监视是否启动了新的应用程序。你可以使用'kqueue',但这不是一种优雅的方式......我将在kqueue上添加信息。 – Yuji 2010-05-12 04:26:07

+0

仍然是一个OS X新手的奇妙信息......谢谢! – jldupont 2010-05-12 12:29:10

相关问题