-[NSWorkspace runningApplications]
даст вам NSArray
из NSRunningApplication
экземпляров, представляющих запущенные в данный момент процессы. Я не совсем уверен, что вызывает исключение программы из этого списка, но он включает в себя любое приложение, которое пользователь запустил из Finder. Он также включает в себя несколько вещей (сам Finder и процесс входа в систему), с которыми вы не хотите связываться, а также безликие приложения.
Вы можете отфильтровать их, используя filteredArrayWithPredicate:
; объекты, которые вы хотите сохранить, имеют activationPolicy
из NSApplicationActivationPolicyRegular
.
После того, как массив отфильтрован, вы можете искать его, используя bundleIdentifier
, bundleURL
или localizedName
, чтобы найти нужное приложение. Затем отправьте hide
или terminate
, как хотите, в этот NSRunningApplication
экземпляр.
У Apple есть пример проекта, который демонстрирует все это и называется AppList .