2013-04-08 18 views
6

Ich entwickle eine einfache Anwendung in Cocoa, und ich möchte erkennen, ob eine Anwendung im Vollbildmodus ausgeführt wird. Ist das möglich?Erkennen von Vollbild-Anwendungen auf dem Mac

Durch runningApplications API kann ich verschiedene Informationen erhalten, aber es gibt keine bestimmte Eigenschaft im Vollbildmodus. Weiß jemand, wie man es entdeckt? Gibt es dafür ein Carbon Event oder API?

+1

Ähnlich wie http://stackoverflow.com/questions/7138194/mac-os-x-lion-detect-if-another-application-is-running-in-full-screen-mode?rq=1 – Jay

+0

@ Jay Danke, dass du auf diese Links gelinkt hast, ich habe noch eine Frage, wenn eine Anwendung im Vollbildmodus läuft und wenn irgendeine andere App eine Warnmeldung gibt, was passiert? und was passiert auch für OSD wie Toast-Nachricht angezeigt, ähnlich wie Apple's Update zur Verfügung .. können Sie mir bitte helfen, diese Antworten zu finden. –

+0

Hmm möchten Sie vielleicht Ihre Anwendung aktivieren, um die Warnung wie in http://stackoverflow.com/questions/5269116/make-a-nsalert-the-topmost-window?rq=1 zu zeigen? – Jay

Antwort

2

Sowieso so viele Möglichkeiten nach dem Versuch aus und Graben in die NSWorkspace i Weg gefunden haben, durch die wir erreichen können diese ihre ist Benachrichtigung

„NSWorkspaceActiveSpaceDidChangeNotification“

Apple-doc sagt: „Geschrieben, wenn ein Spaces hat ändern aufgetreten." damit können wir uns dafür registrieren. Außerdem müssen wir die NSWindow-Eigenschaft "isOnActiveSpace" verwenden, damit wir erkennen können, wann die Anwendung den Vollbildmodus aktiviert und beendet.

+0

Ich habe versucht, Beobachter zur 'NSWorkspaceActiveSpaceDidChangeNotification' Benachrichtigung hinzuzufügen. Aber es funktioniert nur im Debug-Modus. Gibt es im Freigabemodus Systemeinschränkungen? – Gon

+0

Dies ist verfügbar ab 10.6 und später..Do Cross Check einmal..der ist keine Einschränkung als solche sofort sollte es funktionieren –

+0

Weird. Ich werde drüber nachdenken. – Gon

3

Ich kam im Frühjahr in diese und verbrachte ewig damit, es zu arbeiten. Am Ende habe ich meinen Code in ein kleines GitHub-Projekt gepackt, aber ich habe vergessen, es hier zu teilen.

https://github.com/shinypb/FullScreenDetector

Hope this für jemanden nützlich ist.

2

Sie möchten den Schlüsselwert -[NSApplication currentSystemPresentationOptions] beobachten. Wenn sich die aktive App im Vollbildmodus befindet, enthält diese Eigenschaft NSApplicationPresentationFullScreen.