在mac上检测全屏应用程序

时间:2013-04-08 06:45:48

标签: macos cocoa fullscreen macos-carbon nsapplication

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

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

3 个答案:

答案 0 :(得分:3)

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

https://github.com/shinypb/FullScreenDetector

希望这对某人有用。

答案 1 :(得分:2)

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

“NSWorkspaceActiveSpaceDidChangeNotification”

Apple doc说“发生空间变化后发布”。所以通过使用我们可以注册它。与此同时,我们需要使用NSWindow的属性“isOnActiveSpace”,因此我们可以检测应用程序何时进入全屏模式并退出。

答案 2 :(得分:2)

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