Как определить, на каком пространстве находится пользователь в Mac OS X Leopard? - PullRequest
5 голосов
/ 16 февраля 2009

Mac OS X Leopard имеет реализацию виртуального рабочего стола под названием Spaces. Я хочу программно определить, на каком пространстве в данный момент находится пользователь .

Какао предпочтительнее , но AppleScript приемлем , если нет другого пути.

Я видел несколько реализаций AppleScript, но использованные ими методы казались слишком хакерскими для использования в рабочем коде (один из них основывался на возникновении ошибки, а затем разбирал сообщение об ошибке, чтобы получить текущее пространство, другой опрашивался GUI меню Spaces)

Ответы [ 2 ]

15 голосов
/ 16 февраля 2009

Используйте HIWindowGetCGWindowID, чтобы получить CGWindowID для вашего WindowRef.

Используйте этот идентификатор с CGWindowListCreateDescriptionFromArray из CGWindow.h, чтобы получить информацию о вашем окне.

Посмотрите на возвращенный словарь и извлеките (необязательный) ключ kCGWindowWorkspace. Это ваш идентификатор пространства для вашего окна.

9 голосов
/ 25 марта 2010

Если кого-то все еще волнует, я собрал небольшую утилиту командной строки, основанную на ответах, которые вы можете получить здесь: http://github.com/shabble/osx-space-id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...