2012-06-10 7 views
5

Ho bisogno di monitorare eventuali modifiche della risoluzione dello schermo nella mia app, arrivando con la mia app di fronte o meno.C'è un modo per sapere se un'altra applicazione ha cambiato la risoluzione dello schermo in Cocoa?

ho cercato molto su internet ieri e provato tutte queste opzioni:

applicationDidChangeScreenParameters; 
CGDisplayRegisterReconfigurationCallback; 
NSApplicationDidChangeScreenParametersNotification; 

ricevo notifiche quando cambio la risoluzione manualmente o la spina/scollega un nuovo display.

Ma non ricevo notifiche quando altre applicazioni modificano i parametri dello schermo (la maggior parte dei giochi realizzati prima del 2011).

C'è un modo per sapere se Qualsiasi applicazione per Mac cambia la risoluzione dello schermo? Anche se la mia app è in background? Qualsiasi notifica? Speriamo senza API di accessibilità ...?

La ringrazio molto


EDIT (9 giugno)

Questa risposta Events when dock is showing or hiding mi ha aiutato un po '. Da quando ricevo la notifica quando un'altra app entra/esce a schermo intero, ma non quando cambia la risoluzione senza modificare lo stato a schermo intero =/E fa affidamento su Carbon API che sono deprecate su 10.8 ...

Non è esattamente quello che Voglio ma funziona per la maggior parte dei casi ... C'è qualche altro modo per ottenere sul cacao? Qualsiasi notifica globale per questo?

+0

Per cosa stai facendo questo? Se l'utente avvia un gioco a schermo intero, la tua app probabilmente non dovrebbe avere nulla da fare in risposta a questo, perché l'utente non interagirà graficamente con la tua app per tutta la durata del gioco e la risoluzione dello schermo verrà ripristinata quando il gioco si chiude. – user57368

+1

Questo è per la mia applicazione: http://joystickmapper.com/ Funziona su sfondo e ho bisogno di sapere se qualcosa cambia la risoluzione dello schermo per risolvere un problema che si verifica in alcuni giochi quando si utilizza una risoluzione diversa da quella desktop. – Rodrigo

risposta

1

Probabilmente già guardato questa pagina:

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

Inoltre sembra necessario per tenere conto di notifiche da altre applicazioni, quindi, utilizzare NSDistributedNotificationCenter invece di NSNotificationCenter.

+0

Sì, ho letto questo. Forse ho letto male qualcosa. Controllerò solo per essere sicuro. – Rodrigo

+0

Come hai fatto? Sembra strano che il sistema non fornisca queste notifiche quindi sono curioso di sapere se hai funzionato! – markjs

+0

Per qualche motivo, NSDistributedNotificationCenter non funziona per me. quando si utilizza NSNotificationCenter, ho ricevuto le notifiche. tuttavia, quando alcune app modificano temporaneamente la risoluzione dello schermo (e torna alla risoluzione precedente all'uscita), la mia app non riceve alcuna notifica. Non sono sicuro se si tratta di un bug o di una funzionalità. – Rodrigo

Problemi correlati