在另一个应用程序启动时可以启动应用程序的程序机制是什么?如何在OS X上启动依赖应用程序?
E.g.启动iTunes后,Last.fm桌面也会启动。
或者这只是替换某种“批处理文件”的问题?
说明: OS X新手。
在另一个应用程序启动时可以启动应用程序的程序机制是什么?如何在OS X上启动依赖应用程序?
E.g.启动iTunes后,Last.fm桌面也会启动。
或者这只是替换某种“批处理文件”的问题?
说明: OS X新手。
有没有标准的方式来指定一个从属应用程序。所以,你需要以某种方式观看系统。你不必积极投票;你需要使用一些系统机制来告诉你。
要监视一个GUI应用程序来启动,你需要写一个后台程序,由
NSNotificationCenter* nc=[[NSWorkspace sharedWorkspace] notificationCenter];
得到NSWorkspace的通知中心,并观看NSWorkspaceDidLaunchApplicationNotification。请参阅Apple doc
。
要注意要启动的非GUI应用程序,您需要使用kqueue
。 (这是一个BSD功能。)请参阅man page。通常,您必须观看launchd
至fork
或execve
过程。请注意,有多个launchd
进程,一个用于root用户,另一个用于每个登录用户。
无论如何,您需要自动启动您编写的后台应用程序。有很多方法可以做到这一点。
要查看要更改的文件或目录,可以使用launchd
代理。请参阅man page。
顺便说一句:官方Last.fm
应用程序在其首次启动时,在~/Library/iTunes/iTunes Plug-ins
内安装AudioScrobbler.bundle
。 iTunes在启动时读取所有插件,然后该插件启动Last.fm应用程序。这是一个相当不合理的用法,因为插件是用于可视化器的。见Apple doc。
我无法弄清楚如何从你所指的手册页做到这一点。你可以扩展这个吗? 但是对于“last.fm”概要文件+1! – jldupont 2010-05-11 23:55:58
啊,对于输入混淆信息感到抱歉...'launchd'代理可以监视目录中新文件的外观,但它无法监视是否启动了新的应用程序。你可以使用'kqueue',但这不是一种优雅的方式......我将在kqueue上添加信息。 – Yuji 2010-05-12 04:26:07
仍然是一个OS X新手的奇妙信息......谢谢! – jldupont 2010-05-12 12:29:10