Как запустить зависимое приложение на OS X? - PullRequest
0 голосов
/ 11 мая 2010

Каков программный механизм, с помощью которого приложение может быть запущено в результате запуска другого приложения?

например. после запуска iTunes запускается и рабочий стол Last.fm.

Или это просто вопрос замены какого-нибудь "пакетного файла"?

Примечание: OS X новичок.

1 Ответ

2 голосов
/ 11 мая 2010

Нет стандартного способа указать зависимое приложение. Итак, нужно как-то наблюдать за системой. Вам не нужно активно опрашивать; вам нужно использовать какой-то системный механизм, чтобы сообщить вам.

Чтобы наблюдать за запуском приложения с графическим интерфейсом, вам нужно написать фоновое приложение, получить центр уведомлений 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...