2010-07-30 3 views
0

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

Я ищу быстрый способ сделать это. Я могу получить от WinAPI всех информации о целевом окне и переместить мое окно в хорошее место и после того, как он Sniffing Windows Messages целевого окна для поиска размера или будет сдвинуты окна и после этого делать снова переместить мое окно , Но я не знаю, что является простейшим хорошим рабочим способом (может быть, несколько на .NET? Но я не предпочитаю ответов в .NET Мне нравится бесплатный фреймворк).

Я хочу придерживаться сверху, снизу, слева, справа от целевого окна, но это, возможно, неважно.

Может ли кто-нибудь помочь мне с этой проблемой? Спасибо.

+0

Вы пытались переустанавливать свое окно? Я понятия не имею, как это будет работать с окнами в двух разных процессах. – sje397

+0

@ sje397: Я не думаю об этом с этого момента ;-) Я не пытаюсь это сделать, но это хороший момент для альтернативного метода для решения этой проблемы. – Svisstack

+0

@ sje397: в разных процессах я думаю о целевых окнах MessageQueue sniffing. – Svisstack

ответ

0

Я использовал DLLInjection попасть в процесс целевых окон, создал несколько крючков, используя WinAPI звонков и XML над Message Pipe транспортировкой этих значений в другие приложениях, которые прилипают к этим окнам.

-1

Вы в основном должны сделать две вещи:

  1. Получить список всех окон, к которым приложение предполагается придерживаться и их местоположения/размеров.
  2. Слушайте событие перемещения основного окна приложения, и если в любой момент ваше окно приближается к любому из соответствующих окон из # 1, вы перемещаете его самостоятельно, чтобы выровнять его.

Вы можете сделать это как в Win32 API, так и в .Net. Вам просто нужен хороший критерий для # 1. Например, все видимые окна верхнего уровня, которые находятся на границах рабочего стола.

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

+0

У меня есть # 1, уже разработанный в WinAPI в полной версии ;-) Но я спрашиваю о функции выравнивания. Я могу сделать это с помощью WinAPI? Я должен написать это из базовой формы? Я не могу найти об этом в новостях MSDN. – Svisstack

+0

Вам нужно поймать сообщение WM_WINDOWPOSCHANGING и изменить структуру WINDOWPOS (она находится в lParam). – southerton

+1

Нет, в API AFAIK нет функции выравнивания. Вы должны сделать это самостоятельно (или найти существующий код). –

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