2009-02-16 6 views
5

Mac OS X Leopard tiene una implementación de escritorio virtual llamada Spaces. Quiero detectar programáticamente qué espacio el usuario está actualmente en.¿Cómo detectar en qué espacio está el usuario en Mac OS X Leopard?

cacao es preferible pero AppleScript es aceptable si no hay otra manera.

He visto un par de implementaciones de AppleScript, pero las técnicas que utilizaron parecían un poco demasiado extravagantes para usar en el código de producción (uno confió en causar un error y luego analizar el mensaje de error para obtener el espacio actual, el otro interrogó la GUI del menú Spaces)

Respuesta

15

Use HIWindowGetCGWindowID para obtener el CGWindowID para su WindowRef.

Use esa ID con CGWindowListCreateDescriptionFromArray de CGWindow.h para obtener información sobre su ventana.

Mire el diccionario devuelto y extraiga la clave (opcional) kCGWindowWorkspace. Esa es su identificación de espacio para su ventana.

+0

kCGWindowWorkspace está en desuso en el 10,8 y el ensayo de 10.11 que no estoy viendo esta clave ocurra aparecer en el diccionario, así que supongo que ha sido eliminado. – GenericPtr

6

Si alguien todavía se preocupa, he juntado un poco de comandos util sobre la base de las respuestas aquí que se puede obtener en http://github.com/shabble/osx-space-id

+0

+1000 si pudiera. ¡Tu una estrella Shabble para subir el git! – zaf

Cuestiones relacionadas