Есть ли способ узнать, когда activeApplication изменяется в OSX через Python и AppKit? Я знаю, как узнать launchApplication и activeApplication (см. Другой мой вопрос здесь: Поиск текущего активного окна в Mac OS X с помощью Python)
Обнаружение изменений ActiveApplication в OSX через Python
Ответы (2)
У меня есть приложение OS X, которое делает это с помощью опрос с помощью NSTimer. Я попытался найти распределенные уведомления, чтобы узнать, могу ли я найти лучший способ сделать это, но не нашел ничего ужасно полезного.
Я получал уведомления, когда приложение было запущено или выйти. что, по крайней мере, немного полезно. Вы можете увидеть их регистрацию, когда мой просыпается а>.
Это приложение мне очень помогло, и даже при опросе раз в секунду почти не используется процессор. Если бы я мог сделать его более ориентированным на события, я бы сделал это. :)
Я не знаю "официального" / хорошего способа сделать это, но один хакерский способ сделать это - это прослушать любые распределенные уведомления и посмотреть, какие из них всегда запускаются при изменении главного приложения, чтобы вы могли слушать Вон тот:
Вы можете настроить что-то вроде этого:
def awakeFromNib(self):
NSDistributedNotificationCenter.defaultCenter().addObserver_selector_name_object_(
self, 'someNotification:', None, None)
def someNotification_(self, notification):
NSLog(notification.name())
После того, как вы нашли уведомление, которое всегда срабатывает при переключении приложений, вы можете заменить первое «None» в вызове addObserver_etc_ на имя этого уведомления и проверить самое переднее приложение в вашем методе someNotification_.
В моем случае я заметил, что «AppleSelectedInputSourcesChangedNotification» срабатывает каждый раз, когда я переключаю приложения, поэтому я бы послушал это ..
Имейте в виду, что это может сломаться в любой момент, и вы, вероятно, будете проверять наличие изменений в самом переднем приложении чаще, чем необходимо.
Хотя должен быть способ получше ... надеюсь :)