2013-04-08 6 views
6

Cocoa에서 간단한 응용 프로그램을 개발 중이며 응용 프로그램이 전체 화면 모드로 실행되고 있는지 여부를 감지하고자합니다. 이것이 가능한가?Mac에서 전체 화면 응용 프로그램 감지

runningApplications 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

+0

@ Jay 이러한 링크를 가리켜 주셔서 고맙습니다. 모든 응용 프로그램이 전체 화면 모드로 실행 중이고 다른 응용 프로그램에 경고 메시지가 표시되면 질문이 하나 더 생깁니 까? 또한 애플의 업데이트와 비슷한 토스트 메시지를 표시하는 OSD의 경우에는 어떻게됩니까?이 답변을 찾으려면 도움을 청하십시오. –

+0

흠, 애플리케이션을 활성화하여 http://stackoverflow.com/questions/5269116/make-a-nsalert-the-topmost-window?rq=1과 같은 알림을 표시 할 수 있습니다. – Jay

답변

2

어쨌든 너무 많은 옵션을 시도하고 나는 우리가 달성 할 수있는 방법을 발견 한 NSWorkspace을 파고 후이 알림

"NSWorkspaceActiveSpaceDidChangeNotification"

이 공백이 변경 될 때

애플 문서는 "게시 말한다가있다 자신이다 발생했습니다. " 그래서 우리는 그것을 사용하여 등록 할 수 있습니다. 이것과 함께 우리는 NSWindow의 속성 "isOnActiveSpace"를 사용할 필요가있다. 그래서 우리는 애플리케이션이 풀 스크린 모드로 들어가서 빠져 나올 때이를 감지 할 수있다.

+0

'NSWorkspaceActiveSpaceDidChangeNotification' 알림에 옵저버를 추가하려고했습니다. 하지만 디버그 모드에서만 작동합니다. 릴리스 모드에서 시스템 제한이 있습니까? – Gon

+0

이것은 10.6 이상에서 사용할 수 있습니다 .. 한 번 교차 확인하십시오. 다른 어떤 재판도 즉시 이루어지지 않아야합니다. –

+0

이상 함. 나는 그것을 파헤쳐 볼 것이다. – Gon

3

나는 봄에 이것을 만났고 영원히 작동하도록 노력했습니다. 내 코드를 약간의 GitHub 프로젝트로 패키징하는 일을 끝 냈지만 여기에서 그것을 공유하는 것을 완전히 잊었다. 이 사람에 유용

https://github.com/shinypb/FullScreenDetector

희망.

2

-[NSApplication currentSystemPresentationOptions] 키 - 값 관찰을 원합니다. 활성 앱이 전체 화면 모드 인 경우 속성에 NSApplicationPresentationFullScreen이 포함됩니다.