【问题标题】:Mac OS X -- receive notification when frontmost window changesMac OS X -- 在最前面的窗口改变时接收通知
【发布时间】:2018-09-02 17:37:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: objective-c macos events notifications applescript


    【解决方案1】:

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

    您想注册 NSWorkspace 通知...

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

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

    祝你好运。

    【讨论】:

    • 感谢您的提示!这看起来对我很有用。这些是系统范围的通知,对吧?
    【解决方案2】:

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

    最好的,

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 1970-01-01
      • 2011-12-31
      • 2011-07-26
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多