Mac OS X——最前面的窗口发生变化时收到通知

ekl*_*ekl 5 macos events notifications applescript objective-c

我想知道 Mac OS X 中是否有一种方法可以在最前面的窗口切换到另一个窗口时接收通知 - 无论是 Objective-C 解决方案、Python、AppleScript 还是其他窗口。我想查看整个系统,而不仅仅是我的应用程序内。我的应用程序试图跟踪用户当前正在处理的文件,并且我有一个轮询解决方案,可以通过运行 AppleScript 经常获取最前面的应用程序和最前面的窗口,但如果我可以运行该解决方案,它会简化我的生活仅当我知道最前面的窗口已更改时才进行检查。

我还研究了 NSDistributedNotificationCenter 和 NSEvents 的全局事件监视器,它们都以不同的方式有用,但似乎无法为我提供我理想中寻找的特定前窗口更改通知。

任何关于我应该尝试的方向的想法,或者这是否可能,将不胜感激!

reg*_*633 3

我不知道如何在窗口更改时获取通知,但是在 Objective-C 中,当应用程序级别发生事情时,您可以获取通知。这可能对你有帮助。

您想要注册 NSWorkspace 通知...

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(nsworkspaceNotification:) name:nil object:nil];
Run Code Online (Sandbox Code Playgroud)

查看 NSWorkspace 类文档底部的通知。对您有帮助的一些是:NSWorkspaceDidLaunchApplicationNotification、NSWorkspaceDidActivateApplicationNotification、NSWorkspaceDidDeactivateApplicationNotification、NSWorkspaceDidHideApplicationNotification、NSWorkspaceDidUnhideApplicationNotification。可能还有其他人。

祝你好运。