Например, получите уведомление о том, что другое приложение становится активным на экране или отменяет активное состояние.Возможно ли отслеживать другие приложения, используя Cocoa на Mac?
ответ
Несомненно. В классе делегатов приложения вы можете использовать NSWorkspace
, чтобы получать уведомление, когда приложение становится активным (NSWorkspaceDidActivateApplicationNotification
) или уходит в отставку (NSWorkspaceDidDeactivateApplicationNotification
). Дополнительную информацию см. В документации по телефону NSWorkspace
.
В вашем классе контроллера, вы могли бы сделать что-то вроде этого:
- (id)init {
if ((self = [super init])) {
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
selector:@selector(appDidActivate:)
name:NSWorkspaceDidActivateApplicationNotification
object:nil];
}
return self;
}
- (void)dealloc {
[[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self];
[super dealloc];
}
- (void)appDidActivate:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
NSLog(@"userInfo == %@", userInfo);
}
ключевые моменты, в основном, что вы должны зарегистрироваться, чтобы получать уведомления, как показано на -init
. Вы должны повторить код, чтобы добавить другого наблюдателя для каждого дополнительного имени уведомления, которое вы хотите (например, NSWorkspaceDidDeactivateApplicationNotification
).
Другая важная вещь, чтобы помнить, чтобы удалить себя в качестве наблюдателя в -dealloc
(или в другом месте), так что NSWorkspace
не пытается предупредить свой объект контроллера после того, как он был выпущен + dealloc'd (и больше не действительна).
В указанном методе -appDidActivate:
сделайте все, что вам нужно, с информацией об этом приложении.
Если вы хотите что-то более простое, чем distributed objects, вы можете использовать распределенные уведомления из центра распределенных уведомлений. Однако они не отправляются, если вы не создали приложение. Для мониторинга, когда приложения запускаются или завершаются, вы можете использовать NSWorkspace и его центр уведомлений (предложенный NSGod)
- 1. tftp из приложения Cocoa на Mac
- 2. Название приложения Cocoa Mac: «untitled»
- 3. Cocoa - Force Бросить все другие приложения
- 4. Как отслеживать процессы/приложения или блокировки файлов на Mac OSX?
- 5. MBProgressHUD для Mac? - Cocoa
- 6. Delphi на Mac - возможно?
- 7. Возможно ли отслеживать несколько диапазонов из одного приложения?
- 8. Cocoa Websocket Server на Mac OS X
- 9. Закройте другие приложения, используя swift
- 10. Поддерживает ли приложения Cocoa (Xamarin.Mac) System.Drawing.Graphics
- 11. Как PAN и ZOOM NSImages для приложения MAC MAC Cocoa?
- 12. Отслеживать приложения на Android
- 13. Настройки приложения XCode Cocoa?
- 14. Возможно ли отслеживать вызов камеры в андроиде?
- 15. Возможно ли отслеживать установки службой установщика Windows?
- 16. Возможно ли отслеживать изменения во внутреннем классе?
- 17. Отслеживать разработку приложения на твиттере?
- 18. Qt4.5 vs Cocoa для собственного Mac UI
- 19. Книги или другие ресурсы для перехода Java на Cocoa
- 20. Возможно ли создать графический интерфейс, похожий на Mac в Qt?
- 21. Возможно ли распечатать IKImageBrowserView в Cocoa программно?
- 22. Возможно ли отслеживать непрерывные данные 12500kB/s?
- 23. Websphere: влияет ли parent_last на другие приложения?
- 24. cocoa Приложения на основе документов
- 25. Возможно ли отслеживать время на сервере linux из приложения .net на окнах?
- 26. Архитектура приложения какао на Mac OS X
- 27. Возможно ли «отсоединить» устройство Bluetooth в Cocoa/ObjC?
- 28. Есть ли способ отслеживать уведомления Mac на El Capitan?
- 29. Программно потоковое аудио в Cocoa на Mac
- 30. Zabbix: возможно ли отслеживать произвольную строковую переменную?
Прохладно, большое вам спасибо! –
Есть ли эквивалент для NSWorkspace в SDK для ios simulator? – Elist