2013-04-08 39 views
6

Tôi đang phát triển một ứng dụng đơn giản trong Cocoa và tôi muốn phát hiện xem có ứng dụng nào đang chạy ở chế độ toàn màn hình hay không. Điều này có thể không?Phát hiện ứng dụng toàn màn hình trên mac

Thông qua chạy API ứng dụng, tôi có thể nhận được nhiều thông tin khác nhau nhưng không có thuộc tính cụ thể nào liên quan đến chế độ toàn màn hình. Có ai biết làm thế nào để phát hiện nó? Có bất kỳ sự kiện cacbon hoặc API nào cho điều này không?

+1

Tương tự như http://stackoverflow.com/questions/7138194/mac-os-x-lion-detect-if-another-application-is-running-in-full-screen-mode?rq=1 – Jay

+0

@ Jay Cảm ơn bạn đã trỏ đến các liên kết đó, tôi có thêm một truy vấn nếu bất kỳ ứng dụng nào đang chạy ở chế độ toàn màn hình và nếu bất kỳ ứng dụng nào khác đặt thông báo cảnh báo điều gì sẽ xảy ra? và cũng có những gì xảy ra cho OSD như tin nhắn bánh mì nướng hiển thị tương tự như tính năng cập nhật của apple .. có thể bạn hãy giúp tôi tìm ra câu trả lời này. –

+0

Hmm bạn có thể muốn kích hoạt ứng dụng của mình để hiển thị cảnh báo như trong http://stackoverflow.com/questions/5269116/make-a-nsalert-the-topmost-window?rq=1? – Jay

Trả lời

2

Anyways sau khi cố gắng ra rất nhiều lựa chọn và đào vào NSWorkspace tôi đã tìm thấy con đường mà qua đó chúng ta có thể đạt được điều này họ là thông báo

"NSWorkspaceActiveSpaceDidChangeNotification"

của Apple doc nói "văn khi một Spaces thay đổi có xảy ra." vì vậy bằng cách sử dụng chúng tôi có thể đăng ký cho nó. cùng với điều này chúng ta cần phải sử dụng tài sản của NSWindow "isOnActiveSpace", do đó, bằng cách này chúng ta có thể phát hiện khi ứng dụng vào chế độ toàn màn hình và thoát khỏi nó.

+0

Tôi đã cố gắng thêm người quan sát vào thông báo 'NSWorkspaceActiveSpaceDidChangeNotification'. Nhưng nó chỉ hoạt động ở chế độ gỡ lỗi. Có bất kỳ hạn chế hệ thống nào trong chế độ phát hành không? – Gon

+0

Điều này có sẵn từ 10.6 trở lên..do kiểm tra chéo một lần..không phải là bất kỳ phép tính lại nào như vậy ngay lập tức, nó sẽ hoạt động –

+0

Lạ. Tôi sẽ đào sâu vào nó. – Gon

3

Tôi chạy vào điều này vào mùa xuân và dành mãi mãi cố gắng để làm cho nó hoạt động. Tôi đã đóng gói mã của mình thành một dự án nhỏ của GitHub, nhưng tôi hoàn toàn quên chia sẻ nó ở đây.

https://github.com/shinypb/FullScreenDetector

Hy vọng điều này hữu ích cho người khác.

2

Bạn muốn khóa-giá trị quan sát -[NSApplication currentSystemPresentationOptions]. Khi ứng dụng đang hoạt động ở chế độ toàn màn hình, thuộc tính đó sẽ bao gồm NSApplicationPresentationFullScreen.

Các vấn đề liên quan