Mac OS X - 在最前面的窗口更改时接收通知

时间:2013-07-23 19:38:26

标签: objective-c macos events notifications applescript

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

我还查看了NSEvents的NSDistributedNotificationCenter和全局事件监视器,它们在不同方面都很有用,但似乎无法向我提供我理想的前端窗口更改通知。

我应该非常感谢任何关于我应该尝试的方向的想法,或者是否可能这样做!

2 个答案:

答案 0 :(得分:1)

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

您想注册NSWorkspace通知......

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

查看NSWorkspace类文档的底部以获取通知。一些可以帮到你的是:NSWorkspaceDidLaunchApplicationNotification,NSWorkspaceDidActivateApplicationNotification,NSWorkspaceDidDeactivateApplicationNotification,NSWorkspaceDidHideApplicationNotification,NSWorkspaceDidUnhideApplicationNotification。可能还有其他人。

祝你好运。

答案 1 :(得分:0)

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

最好