2010-05-11 43 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

相關問題