Я использую NSWorkspaceDidActivateApplicationNotification
NSWorkspace, чтобы определять, когда изменяется активное приложение. Я получаю NSRunningApplication
из ключа userInfo в уведомлении.
Мне нужно получать уведомление при изменении активного документа. Я могу получить активный документ, используя ключ NSAccessibilityDocumentAttribute
в структуре специальных возможностей до AXUIElementCopyAttributeValue()
.
Мне нужен более точный способ определения изменений документа, кроме опроса. Некоторые приложения используют несколько окон, а другие - одно окно с несколькими вкладками. В приложениях с вкладками окно возвращает текущий просматриваемый документ.
Мне не нужно использовать фреймворк доступности. AppleScript (мост сценариев), похоже, также может получить документ окна, но структура доступности, похоже, работает с большим количеством приложений.
Меня интересует только активный документ, активное окно, активное приложение. Что в настоящее время сосредоточено на системе.
Я тестировал такие приложения, как Sublime Text 2 и Xcode. Sublime возвращает текущую выбранную вкладку, а Xcode возвращает активный проект.