Я хотел бы получать уведомления об изменении главного окна самого переднего приложения, т.е. изменении вкладки в браузере, изменении документа в SublimeText и т. д., и получить заголовок этого текущего главного окна. Я новичок в Swift, поэтому буду признателен за любую информацию/помощь.
Я написал фрагмент кода для наблюдения за самым передним приложением, используя addobserver для объекта didActivateAppNotification. Он успешно распечатывает самое переднее приложение каждый раз, когда оно меняется на новое.
Поэтому я также хочу сделать то же самое с главным окном самого переднего приложения. Однако все, что я могу сделать, это получить списки окон самого переднего приложения через CGWindowListOption, как объяснено здесь, затем прокрутите его, чтобы получить список окон самого переднего приложения, и отфильтруйте его, чтобы получить главное окно. Но мне не нужно решение для опроса, которое должно получать этот список каждую секунду. Вместо этого я хотел бы использовать наблюдатель уведомлений, чтобы я мог спросить, когда изменится главное окно. - Я также пробовал некоторые решения Applescript, все они должны быть решениями для опроса.
Я не смог найти никаких руководств, примеров классов NSAccessibilityNotificationName, так как говорится, что они требуют специальной обработки в Форумы разработчиков Apple. Как я мог наблюдать за этими уведомлениями для внешних приложений? (в частности, mainWindowChanged в моем примере)
Приветствую, удачного кодирования!
class activeApp: NSObject {
override init() {
super.init()
NSWorkspace.shared.notificationCenter.addObserver(self,
selector: #selector(printMe(notification:)),
name: NSWorkspace.didActivateApplicationNotification,
object:nil)
}
@objc func printMe(notification: NSNotification) {
let app = notification.userInfo!["NSWorkspaceApplicationKey"] as! NSRunningApplication
print(app.localizedName!)
}
}
let runme = activeApp()
RunLoop.main.run()