Второе переднее приложение? - PullRequest
2 голосов
/ 19 июля 2009

Я ищу способ определить второе переднее приложение. Вот что я имею в виду.

Допустим, я запускаю три приложения в следующем порядке: Xcode, Interface Builder и мое приложение. Если я нажму вкладку «Command», в коммутаторе появятся четыре приложения: (слева направо) мое приложение, Interface Builder, Xcode и Finder.

Скажем так, я переключаюсь на Finder. Новый порядок в переключателе приложений: Finder, мое приложение, Interface Builder и Xcode.

Если я затем переключаюсь обратно на свое приложение, то теперь заказ - это мое приложение, Finder, Interface Builder и Xcode.

Я ищу API, с помощью которого я могу вызвать его и получить ответ, что во время запуска Interface Builder является вторым приложением, но когда я переключаюсь на него, теперь это Finder.

Если это не так, мое приложение фактически не будет отображаться в переключателе приложений, поскольку это будет приложение агента (LSUIElement = YES).

Есть ли API, который может это сделать? Единственная альтернатива, которую я нашел, - это запустить таймер, который непрерывно следит за активным приложением, согласно NSWorkspace. Это работает хорошо, кроме как во время запуска. Я хотел бы знать второе переднее приложение при запуске, если это возможно.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 19 июля 2009

Вы, вероятно, сможете собрать информацию из:

Справочник диспетчера процессов (GetFrontProcess(), GetNextProcess())

Foundation.framework/Headers/NSGraphics.h (NSCountWindows(), NSWindowList())
Справочник услуг по кварцевым окнам
CoreGraphics.framework/Headers/CGWindow.h
code.google.com CGSPrivate.h
www.cocoadev.com CoreGraphicsPrivate

0 голосов
/ 19 июля 2009

При запуске, не будет ли второе переднее приложение последним запущенным приложением?

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