2013-04-08 47 views
6

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

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

+1

类似于http://stackoverflow.com/questions/7138194/mac-os-x-lion-detect-if-another-application-is-running-in-full-screen-mode?rq=1 – Jay 2013-04-08 08:54:42

+0

@周杰伦感谢指向这些链接,我有一个更多的查询,如果任何应用程序正在全屏模式下运行,并且如果任何其他应用程序提出警报消息会发生什么?以及OSD会发生什么,就像烤面包的信息显示类似于苹果的更新可用功能..你可以帮我找出答案。 – 2013-04-08 10:07:47

+0

嗯,你可能想激活你的应用程序,让警报显示在http://stackoverflow.com/questions/5269116/make-a-nsalert-the-topmost-window?rq=1? – Jay 2013-04-08 11:44:41

回答

2

不管怎么说尝试了这么多的选择和挖掘到NSWorkspace我已经找到方法,通过它我们可以实现在此之后他们是通知

“NSWorkspaceActiveSpaceDidChangeNotification”

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

+0

我试图将观察者添加到“NSWorkspaceActiveSpaceDidChangeNotification”通知中。但它只能在调试模式下工作。发布模式有没有系统限制? – Gon 2013-10-31 07:39:49

+0

这是从10.6及更高版本可用。一次交叉检查..其他不是任何resrtiction这样直接它应该工作 – 2013-11-09 09:49:42

+0

奇怪。我会深入研究它。 – Gon 2013-11-13 07:51:40

2

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