2012-06-10 39 views
5

我需要監視我的應用程序中的任何屏幕分辨率更改,與我的應用程序在前面或不在。有什麼辦法可以知道另一個應用程序是否改變了Cocoa的顯示分辨率?

昨天我在網上搜索了很多,並試圖所有這些選項:

applicationDidChangeScreenParameters; 
CGDisplayRegisterReconfigurationCallback; 
NSApplicationDidChangeScreenParametersNotification; 

我得到通知時,我手動更改分辨率或插/拔新的顯示。

但是,當其他應用程序更改屏幕參數(2011年之前製作的大多數遊戲)時,我不會收到通知。

有沒有什麼辦法知道是否任何 mac應用程序改變屏幕分辨率?即使我的應用程序在後臺?有沒有通知?希望沒有Accessibility API ...?

非常感謝您


EDIT(6月9日)

這個答案Events when dock is showing or hiding幫我一點點。由於我在另一個應用程序進入/退出全屏狀態時收到通知,但不是在更改分辨率時未更改全屏狀態= /並且它依賴於10.8版棄用的Carbon APIs ...

這不完全是什麼我想,但大多數情況下工作... 有什麼其他方式來實現可可?任何全球通知?

+0

你在做什麼?如果用戶啓動全屏遊戲,則應用程序可能不應該做任何響應,因爲在遊戲期間用戶不會與您的應用程序進行圖形交互,屏幕分辨率將會恢復當遊戲退出時。 – user57368

+1

這是爲我的應用程序:http://joystickmapper.com/它運行在背景上,我需要知道是否有任何更改屏幕分辨率,以解決使用不同於桌面分辨率的分辨率在幾場比賽中發生的問題。 – Rodrigo

回答

1

你可能已經看到這個頁面:

https://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/QuartzDisplayServicesConceptual/Articles/Notification.html%23//apple_ref/doc/uid/TP40004235-SW1

而且看來你需要考慮從其他應用的通知,因此使用NSDistributedNotificationCenter而不只是NSNotificationCenter

+0

是的,我讀過這個。也許我誤解了一些東西。我會仔細檢查一下。 – Rodrigo

+0

你的票價如何?這似乎很奇怪,系統不提供這些通知,所以我很好奇,如果你得到它的工作! – markjs

+0

出於某種原因,NSDistributedNotificationCenter不適合我。當使用NSNotificationCenter時,我收到了通知。但是,當某些應用程序暫時更改屏幕分辨率(並退出時返回先前的分辨率)時,我的應用程序根本不會收到任何通知。不知道這是一個錯誤還是一個功能。 – Rodrigo

相關問題