Я пытаюсь определить, когда запускаются определенные приложения.
В настоящее время я использую NSWorkspace
, регистрируясь для уведомления «сделал запуск приложения». Я также использую метод runningApplications
, чтобы получить приложения, которые в данный момент работают при запуске моего приложения.
Для большинства приложений достаточно названия пакета приложений. У меня есть список «известных приложений», который я сверяю с именем, которое было передано в уведомлении.
Это прекрасно работает, пока вы не встретите приложение, которое действует как прокси для запуска другого приложения с использованием аргументов командной строки.
Пример. В недавно выпущенном портале на Mac нет выделенного пакета приложений. Steam может создать ярлык, который служит не более чем для запуска приложения hl2_osx
с аргументом -game
и portal
в качестве его параметра.
Поскольку все больше исходных игр направляются на Mac, я думаю, что они будут использовать тот же метод для запуска, эффективно запуская приложение hl2_osx
с аргументом -game
.
Есть ли хороший способ получить список аргументов (и их параметров) с помощью API Какао?
NSProcessInfo
подходит близко, предлагая метод `-arguments ', но предоставляет информацию только для своего собственного процесса ...
NSRunningApplication
предлагает возможность получать информацию о произвольных приложениях, используя PID, но без аргументов командной строки ...
Есть ли что-нибудь, что заполняет пропасть между ними?
Я пытаюсь не идти по пути порождения NSTask
для запуска ps -p [pid]
и парсинга вывода ... Я бы предпочел что-то более высокое.