Нет стандартного способа указать зависимое приложение. Итак, нужно как-то наблюдать за системой. Вам не нужно активно опрашивать; вам нужно использовать какой-то системный механизм, чтобы сообщить вам.
Чтобы наблюдать за запуском приложения с графическим интерфейсом, вам нужно написать фоновое приложение, получить центр уведомлений NSWorkspace по
NSNotificationCenter* nc=[[NSWorkspace sharedWorkspace] notificationCenter];
и следите за NSWorkspaceDidLaunchApplicationNotification. См. Apple doc
.
Чтобы наблюдать за запуском приложения без графического интерфейса, вам нужно использовать kqueue
. (Это функция BSD.) См. Справочную страницу . Обычно вы должны наблюдать процессы от launchd
до fork
или execve
. Обратите внимание, что существует несколько процессов launchd
, один для пользователя root и один для каждого вошедшего в систему пользователя.
В любом случае вам нужно автоматически запустить фоновое приложение, которое вы пишете. Есть много способов сделать это.
Чтобы просмотреть файл или каталог для изменения, вы можете использовать launchd
агентов. См. справочную страницу .
Кстати: официальное приложение Last.fm
при первом запуске устанавливает AudioScrobbler.bundle
внутри ~/Library/iTunes/iTunes Plug-ins
. При запуске iTunes читает все плагины, а затем плагин запускает приложение Last.fm. Это довольно хакерское, безоговорочное использование интерфейса, потому что плагин предназначен для визуализатора. См. Apple Doc .