Как получить доступ к иерархии окон для моего приложения на Mac? - PullRequest
1 голос
/ 21 июня 2010

Я имею в виду все окна, которые принадлежат моему приложению (процессу).Мне нужно получить что-то вроде (NSWindow *) для всех из них.Обратите внимание, что некоторые окна были созданы сторонними плагинами и не доступны [NSApp windows].Да, я знаю, Quartz Window Services может вернуть все окна по PID.Но как я могу получить NSWindow по CGWindowID?Спасибо!

Ответы [ 2 ]

3 голосов
/ 22 июня 2010

Попробуйте NSWindowList, чтобы получить номера окон, а затем -[NSApplication windowWithWindowNumber:], чтобы получить NSWindows.

2 голосов
/ 30 июня 2010

Обычно NSWindowList() выдаст идентификаторы окна.Также есть службы кварцевых окон , чтобы помочь.

  • Чтобы получить NSWindow* (Какао), есть метод [NSApp windowWithWindowNumber: (NSInteger)windowID].
  • Чтобы получить WindowRef(Углерод) есть функция HIWindowFromCGWindowID().

Если оба вышеперечисленных пункта не работают, это означает, что окно было создано с помощью CoreGraphics Private API.Его определение доступно благодаря реверс-инжинирингу.

Что касается окон X11 на Mac, они созданы с помощью библиотеки Xplugin (от Xquartz), которая является закрытым исходным кодом и также использует CoreGraphics Private API.

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