Получение главного окна приложения через экземпляр NSRunningApplication

Я наблюдаю, что уведомление NSWorkspaceDidDeactivateApplicationNotification получает приложение, которое только что потеряло фокус. Я заканчиваю с экземпляром NSRunningApplication, который Вы получаете от userInfo ключа словаря - NSWorkspaceApplicationKey - объекта уведомления.

Я думал, что смогу получить главное окно из приложения из уведомления, но я не уверен, куда пойти отсюда, поскольку NSRunningApplication кажется довольно ограниченному. Любая справка ценилась бы.

BTW - Я использую MacRuby, но ответ не должен быть в MacRuby.

Спасибо

6
задан Alistair Holt 30 December 2009 в 17:48
поделиться

3 ответа

Apple традиционно был довольно заблокирован на подобные вещи. Само NSRunningApplication было только что представлено в 10.6, и, как вы сказали, оно немного ограничено. В зависимости от того, что вы хотите сделать, ответ может быть в фреймворке доступности , или это может быть CGWindow API . Вы можете использовать processIdentifier из NSRunningApplication для сравнения с этими API.

.
5
ответ дан 16 December 2019 в 21:41
поделиться

Очень трудно получить главное окно других приложений, они даже не гарантированно являются Какао! Они могут быть как Carbon или Java, так и Qt, или Mono... Так что вы не сможете получить NSWindow из другого приложения, если только не сделаете взлом. Вы можете попробовать API доступности, чтобы получить информацию об окне и т.д. других приложений независимо от используемого фреймворка, но это не так просто использовать.

.
2
ответ дан 16 December 2019 в 21:41
поделиться

Если заявка не предусматривает участие в IAC через поддержку AppleScript или каким-либо другим способом, вы просто не прикасаетесь к его окнам или к чему-либо еще за пределами вашего собственного пространства кучи.

1
ответ дан 16 December 2019 в 21:41
поделиться