Swift NSAccessibilityNotificationName.mainWindowChanged观察者在主窗口更改时收到通知
我希望在最前面的应用程序的主窗口发生更改时收到通知,即更改浏览器中的选项卡、在SublimiteText中更改文档等,并获取当前主窗口的标题。我是Swift的新手,因此我非常感谢您提供的任何信息/帮助 我已经编写了一段代码,通过在didActivateAppNotification对象上使用addobserver来观察frontmostapp。每次更改为新应用程序时,它都会成功打印出最前端的应用程序 所以我也想对最前面的应用程序的主窗口做同样的事情。但是,我所能做的就是通过CGWindowListOption获取最前端应用程序的窗口列表,如前所述,然后滚动该窗口以获取最前端应用程序的窗口列表,并对其进行过滤以获取主窗口。但是我不想要一个轮询解决方案,那就是每秒都获取这个列表。相反,我想使用一个通知观察者,这样我就可以真正询问主窗口何时更改-我还尝试了一些Applescript解决方案,它们都需要是轮询解决方案 我找不到任何教程,NSAccessibilityNotificationName类的示例,因为它说它们需要在中进行特殊处理。如何观察外部应用程序的通知?(在我的示例中特别更改) 干杯,快乐编码Swift NSAccessibilityNotificationName.mainWindowChanged观察者在主窗口更改时收到通知,swift,macos,nsnotificationcenter,accessibility-api,Swift,Macos,Nsnotificationcenter,Accessibility Api,我希望在最前面的应用程序的主窗口发生更改时收到通知,即更改浏览器中的选项卡、在SublimiteText中更改文档等,并获取当前主窗口的标题。我是Swift的新手,因此我非常感谢您提供的任何信息/帮助 我已经编写了一段代码,通过在didActivateAppNotification对象上使用addobserver来观察frontmostapp。每次更改为新应用程序时,它都会成功打印出最前端的应用程序 所以我也想对最前面的应用程序的主窗口做同样的事情。但是,我所能做的就是通过CGWindowLis
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()