0

在启动另一个应用程序时可以启动一个应用程序的编程机制是什么?

例如,在启动 iTunes 时,Last.fm 桌面也会启动。

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

注意: OS X 新手。

4

1 回答 1

2

没有指定依赖应用程序的标准方法。所以,你需要以某种方式观察系统。您不必主动投票;你需要用一些系统机制来告诉你。

要监视 GUI 应用程序的启动,您需要编写一个后台应用程序,通过以下方式获取 NSWorkspace 的通知中心

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

并注意 NSWorkspaceDidLaunchApplicationNotification。见Apple doc

要监视非 GUI 应用程序的启动,您需要使用kqueue. (这是 BSD 功能。)请参见手册页。通常,您必须注意launchdfork处理execve。请注意,有多个launchd进程,一个用于 root,一个用于每个登录用户。

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

要监视文件或目录的变化,可以使用launchd代理。请参阅手册页

顺便说一句:官方Last.fm应用程序在首次启动时会安装AudioScrobbler.bundle~/Library/iTunes/iTunes Plug-ins. iTunes 会在启动时读取所有插件,然后插件会启动 Last.fm 应用程序。这是对界面的一种相当骇人听闻的、非宽恕的用法,因为该插件是用于可视化工具的。请参阅Apple 文档

于 2010-05-11T18:34:52.730 回答