5

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

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

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

4

2 回答 2

3

我不知道在窗口更改时获取通知的方法,但是在objective-c 中,您可以在应用程序级别发生事情时收到通知。那可能对你有帮助。

您想注册 NSWorkspace 通知...

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(nsworkspaceNotification:) name:nil object:nil];

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

祝你好运。

于 2013-07-23T21:00:03.403 回答
1

我认为您会捕获 NSWindowDidBecomeMainNotification。通知对象包含 NSWindow。

最好的,

于 2018-09-02T09:37:04.573 回答