我正在 Cocoa 中开发一个简单的应用程序,我想检测是否有任何应用程序以全屏模式运行。这可能吗?
通过 runningApplications API,我可以获得各种信息,但没有与全屏模式相关的特定属性。有谁知道如何检测它?是否有任何碳事件或 API?
我正在 Cocoa 中开发一个简单的应用程序,我想检测是否有任何应用程序以全屏模式运行。这可能吗?
通过 runningApplications API,我可以获得各种信息,但没有与全屏模式相关的特定属性。有谁知道如何检测它?是否有任何碳事件或 API?
我在春天遇到了这个问题,并花了很长时间试图让它发挥作用。我最终将我的代码打包成一个小 GitHub 项目,但我完全忘记在这里分享它。
https://github.com/shinypb/FullScreenDetector
希望这对某人有用。
无论如何,在尝试了这么多选项并深入研究 NSWorkspace 之后,我找到了实现这一目标的方法,他们是通知
“NSWorkspaceActiveSpaceDidChangeNotification”
苹果文档说“在空间发生变化时发布”。所以通过使用我们可以注册它。除此之外,我们需要使用 NSWindow 的属性 "isOnActiveSpace" ,因此我们可以检测应用程序何时进入全屏模式并退出。
您想要键值观察-[NSApplication currentSystemPresentationOptions]
。当活动应用程序处于全屏模式时,该属性将包括NSApplicationPresentationFullScreen
.