【问题标题】:Detecting Full screen applications on mac在 mac 上检测全屏应用程序
【发布时间】:2013-04-08 06:45:47
【问题描述】:

我正在 Cocoa 中开发一个简单的应用程序,我想检测是否有任何应用程序以全屏模式运行。这可能吗?

通过 runningApplications API,我可以获得各种信息,但没有与全屏模式相关的特定属性。有谁知道如何检测它?是否有任何碳事件或 API?

【问题讨论】:

  • @Jay 感谢您指向这些链接,如果有任何应用程序以全屏模式运行,并且如果任何其他应用程序发出警报消息,我还有一个查询会发生什么?以及显示类似于苹果的更新可用功能的 OSD 之类的吐司消息会发生什么......请你帮我找出这个答案。
  • 嗯,您可能想激活您的应用程序以显示类似stackoverflow.com/questions/5269116/… 中的警报?
  • 好的..但我的基本问题是如何检测是否有任何用户应用程序已退出全屏模式?..这是我要做的...我想显示用户一条类似 toast 的消息,但条件是如果用户有任何全屏应用程序,比如它可能是任何游戏或任何应用程序,那么我就不必显示它,然后一旦应用程序从完整模式退出,我就想显示message ,..所以他们的检测方法是什么??

标签: macos cocoa fullscreen macos-carbon nsapplication


【解决方案1】:

我在春天遇到了这个问题,并花了很长时间试图让它发挥作用。我最终将我的代码打包成一个小 GitHub 项目,但我完全忘了在这里分享。

https://github.com/shinypb/FullScreenDetector

希望这对某人有用。

【讨论】:

    【解决方案2】:

    无论如何,在尝试了这么多选项并深入研究 NSWorkspace 之后,我找到了实现这一目标的方法,他们的通知

    “NSWorkspaceActiveSpaceDidChangeNotification”

    Apple 文档说“在空间发生更改时发布”。所以通过使用我们可以注册它。除此之外,我们还需要使用 NSWindow 的属性 "isOnActiveSpace" ,因此我们可以检测应用程序何时进入全屏模式并退出。

    【讨论】:

    • 我尝试将观察者添加到NSWorkspaceActiveSpaceDidChangeNotification 通知。但它只适用于调试模式。发布模式有系统限制吗?
    • 这在 10.6 及更高版本中可用.. 交叉检查一次.. 没有任何限制,因为它应该可以立即工作
    • 很奇怪。我会深入研究的。
    • 空间变化不仅仅发生在应用进入或退出全屏模式时。用户可以拥有任意多个非全屏空间。你打算测试哪个窗口的-isOnActiveSpace
    【解决方案3】:

    您希望键值对观察-[NSApplication currentSystemPresentationOptions]。当活动应用处于全屏模式时,该属性将包含NSApplicationPresentationFullScreen

    【讨论】:

      猜你喜欢
      • 2010-10-12
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多