2009-02-16 10 views
5

Mac OS X Leopard ha un'implementazione desktop virtuale denominata Spaces. Voglio rilevare automaticamente quale spazio l'utente è attualmente su.Come individuare lo spazio su cui si trova l'utente in Mac OS X Leopard?

cacao è preferibile ma AppleScript è accettabile se non c'è altro modo.

Ho visto un paio di implementazioni di AppleScript, ma le tecniche che usavano mi sembravano un po 'troppo hacky da utilizzare nel codice di produzione (una invocata causava un errore e poi l'analisi del messaggio di errore per ottenere lo spazio corrente, l'altro interrogato la GUI del menu Spaces)

risposta

15

Utilizzare HIWindowGetCGWindowID per ottenere CGWindowID per WindowRef.

Utilizzare quell'ID con CGWindowListCreateDescriptionFromArray da CGWindow.h per ottenere informazioni sulla finestra.

Esaminare il dizionario restituito ed estrarre la chiave kCGWindowWorkspace (facoltativa). Questo è il tuo ID spazio per la tua finestra.

+0

kCGWindowWorkspace è deprecato in 10.8 e test su 10.11 Non sto vedendo questo tasto compare mai nel dizionario quindi presumo sia stato rimosso. – GenericPtr

6

Se qualcuno tiene ancora, ho messo insieme un po 'di comando util sulla base delle risposte qui che si può ottenere in http://github.com/shabble/osx-space-id

+0

+1000 se potessi. La tua stella Shabble per il caricamento git! – zaf

Problemi correlati