2010-06-14 4 views
2

Мне нужно разместить мое окно в окне другого приложения. Как перечислить окна другого приложения для какао? Можно ли их контролировать ? Если нет: как я могу нарисовать окно другого приложения? Спасибо!Как вернуть окно Какао?

ответ

3

Как перечислить окна другого приложения какао?

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

Можно ли их контролировать?

Здесь косвенно, независимо от того, является ли приложение какао (или углерод с использованием стандартных элементов управления). Точнее, важно, доступно ли приложение.

Как правило, можно перемещать другое окно, изменять его размер или делать простые вещи с элементами управления (например, кнопками).

Невозможно скопировать одно из ваших окон в окно в другом приложении. Вы должны будете наблюдать за его местоположением и перемещать свое окно, когда другой движется. После живого перетаскивания этот путь невозможен.

Если нет: как я могу нарисовать окно другого приложения?

Вы не можете. Вы можете рисовать только в своих окнах.

Вы можете сделать прозрачное оверлейное окно и нарисовать его, но это вернет вас к проблеме записи одного из ваших окон в окно в другом приложении.

Возможно, вам следует задать более широкий вопрос о том, чего вы надеетесь достичь, нажимая одно из ваших окон на окно в другом приложении или рисуя в окно в другом приложении.

+0

Спасибо, Питер! Я сделаю следующее предложение: могу ли я выложить окно без полей таким образом, чтобы оно отображалось точно в некотором месте (я имею в виду определенные координаты x и y из левого верхнего угла) другого активного окна, перемещаться и скрываться с ним, чтобы пользователь мог подумать, что он действительно размещен на нем? – shoumikhin

+0

Я ответил, что во второй трети моего ответа. –

-1

Какао не поддерживает повторное использование другого окна приложения или его рисования.

Но, там уже два способа получить окна атрибутов для всех приложений, таких как положение, размер, г-го порядка и т.д.

  1. Accessibility API (также позволяет контролировать окно иностранного приложения: перемещать, изменять размер, нажимать на него кнопки и т. д.). Если иностранная заявка не поддерживает API доступности, то ...
  2. Quartz Window Services и пример кода для них, называемый «Son of Grab».
+0

Ни одно из этих решений не может на самом деле закрепить одно окно другим; API Accessibility не предоставляет живых обновлений по мере того, как происходит перетаскивание, а Quartz Window Services вообще не предоставляет каких-либо уведомлений об изменении окна или -resize. –

0

заказ CGWindow.h

CGWindowListCreateDescriptionFromArray(), вероятно, что вы ищете.

+0

Да, это часть Quartz Window Services. – shoumikhin

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