2015-02-26 12 views
1

Документация CGWindowListCopyWindowInfo говоритКак улучшить производительность CGWindowListCopyWindowInfo

Создание словарей для системы окон относительно дорогостоящей операции. Как всегда, вы должны прокомментировать свой код и соответствующим образом настроить использование этой функции для своих нужд.

Мой вопрос: как я могу «настроить» мое использование этой функции? Для процесса автоматизации кода мне часто нужно проверить, какое окно находится впереди среди документов на уровне документа или мода. То есть я вызываю CGWindowListCopyWindowInfo, игнорируя окна, относящиеся к другим процессам, или уровни, которые мне не нужны, и идентифицируйте первое оставшееся окно.

Если бы был способ запросить информацию о только окнах, принадлежащих моему процессу, скажем, это было бы хорошо, но я не вижу возможности сделать это. Или если бы был способ получить уведомление, когда меняют окна. Я мог наблюдать за событиями Carbon, когда окна скрыты или показаны, но, конечно, это устаревшая технология.

+0

Вы действительно не сказали, что именно вы делаете. Как вы на самом деле используете эту функцию? – uchuugaka

+0

@uchuugaka, я добавил предложение на свой вопрос, отвечает ли это на ваш вопрос? – JWWalker

+2

Сделайте либо '- [NSApplication orderedWindows]', либо '+ [NSWindow windowNumbersWithOptions:]' в сочетании с '- [NSApplication windowWithWindowNumber:]' работает лучше для ваших целей? В первом есть предостережение, что он игнорирует некоторые виды окон. Я не знаю, быстрее или быстрее, чем 'CGWindowListCopyWindowInfo()'. –

ответ

2

Вы можете использовать [NSWindow windowNumbersWithOptions:0], чтобы получить номера окон только в окнах текущего приложения (в активном пространстве) в z-порядке.

Смежные вопросы