как приаттачить чужое WND к своему приложению ?
От: DNR  
Дата: 19.03.07 07:39
Оценка:
Доброго времени суток!

Пожалуйста, помогите с идеями или примерами…

Ситуация следующая...
Есть чужое приложение Win32.
Приложение открывается в своём окне (Resizable Dialog).
Исходников данного приложения нет.

Можно ли как-нибудь заставить данное – чужое приложение работать в рамках родного MDI.

Я имею ввиду что делать оно будет то, что и ранее. Вмешиваться в логику работы нет необходимости, вот только оно управляться (open/close) будет другой оболочкой.

Сценарий такой. Нажали на кнопку в MDI, по ней взлетел чужой exe, приаттачился к одному из child и работает как часть этого MDI. По нажатию на Close, child закрывается и чужое приложение умирает тоже.

Заранее спасибо.
Re: как приаттачить чужое WND к своему приложению ?
От: bnk СССР http://unmanagedvisio.com/
Дата: 19.03.07 08:02
Оценка: 2 (1)
Здравствуйте, DNR, Вы писали:

DNR>Ситуация следующая...

DNR>Есть чужое приложение Win32.
DNR>Приложение открывается в своём окне (Resizable Dialog).
DNR>Исходников данного приложения нет.

DNR>Можно ли как-нибудь заставить данное – чужое приложение работать в рамках родного MDI.

Смотря что вы имеете под этив в виду.

DNR>Я имею ввиду что делать оно будет то, что и ранее. Вмешиваться в логику работы нет необходимости, вот только оно управляться (open/close) будет другой оболочкой.

Это можно.

DNR>Сценарий такой. Нажали на кнопку в MDI, по ней

>взлетел чужой exe,
легко — просто запустите его
>приаттачился к одному из child
невозможно, это окно другого процесса.
Обработчик сообщений окна должен быть в том же процессе что и само окно.
Обходится установкой глобальных хуков, но не уверен что вам это нужно.
Или что подразумевается под словами "приаттачился"?
>и работает как часть этого MDI.
тоже непонятно, что имеется в виду...
> По нажатию на Close, child закрывается и чужое приложение умирает тоже.
легко — закрыть окно и все.
Re[2]: как приаттачить чужое WND к своему приложению ?
От: DNR  
Дата: 19.03.07 08:34
Оценка:
Здравствуйте, bnk,



bnk> Или что подразумевается под словами "приаттачился"?

>>и работает как часть этого MDI.
bnk> тоже непонятно, что имеется в виду...

ну я не вдаваясь в подробности хотел сказать, что контекст чужого приложения отображается в одном из child'ов моего MDI.
при этом в чужом приложении всё живое, всё кликабельное всё маргает и светится — всё обрабатывается. Мне нет необходимости лезть во внутрь чужого приложения. просто надо чтобы его контекст отображался в одном из моих child'ов.


bnk> Обходится установкой глобальных хуков, но не уверен что вам это нужно.

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


Возможно ли то чтоя описал и если да, то как?
Re[3]: как приаттачить чужое WND к своему приложению ?
От: bnk СССР http://unmanagedvisio.com/
Дата: 19.03.07 09:57
Оценка:
Здравствуйте, DNR, Вы писали:

DNR>ну я не вдаваясь в подробности хотел сказать, что контекст чужого приложения отображается в одном из child'ов моего MDI.

DNR>при этом в чужом приложении всё живое, всё кликабельное всё маргает и светится — всё обрабатывается. Мне нет необходимости лезть во внутрь чужого приложения. просто надо чтобы его контекст отображался в одном из моих child'ов.

bnk>> Обходится установкой глобальных хуков, но не уверен что вам это нужно.

DNR>Да не совсем то, с хуками я могу делать всё что мне надо с чужим приложением. Но вот загнать его в свой MDI неполучилось.

DNR>Возможно ли то чтоя описал и если да, то как?


Мне на ум приходит такое решение — перехватывать все события по поводу размера от MDI окошка, в которое надо "запихать" внешний диалог, и изменять его размер/позицию соответственно.. Можно наверное извернуться и отсекать его еще соответственно...
Но в общем, IMHO, задача заставить внешний диалог работать как клиентское окно внутри MDI... хм, труднорешаема. Я, по крайней мере, ничего радикально простого присоветовать не в состоянии.

— Express this in one word, please..
— Sabotage! (c)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.