· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› HDC+interprocessing

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июл 11, 2004 21:45:26

Возможно ли попросить окно чужого процесса отрисоваться на определенном DC? Т.е послать ему WM_PRINT со своим HDC. Но, по-моему, HDC не будет валидным для другого процесса. Если это так, то как это можно реализовать?


Дата: Июл 11, 2004 22:45:19

Дык а что мешает внедриться в другой процесс и от его имени уже попросить?


Дата: Июл 11, 2004 23:06:24

А что-нибудь попроще? Обе программы мои, так что можно вносить изменения куда угодно. Я думаю, что надо либо как-то скопировать объект в нужный процесс, либо выдернуть данные из DC, передать их, и затем на их основе создать новый DC. Может кто-нибудь чем-нибудь подобным занимался?


Дата: Июл 12, 2004 01:52:28

Хм. А что на выходе должно быть? В чем смысл?


Дата: Июл 12, 2004 02:08:37

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


Дата: Июл 12, 2004 03:49:31

__Ranger
прошу движок отрисоваться в DC, и затем этот DC отрисовать в диалоге настроек.
А что мешает скопировать DC и передать его диалогу?


Дата: Июл 13, 2004 00:33:14

Интересно, как можно скопировать DC? Может быть HDC? Все равно, при передаче HDC, который валидный в одном процессе , теряет смысл в другом.


Дата: Июл 13, 2004 00:58:22

Не, я имел ввиду сам рисунок: скопировать его и передать его диалогу, пускай себе отрисовывает.


Дата: Июл 13, 2004 01:44:39

Видимо, придется всё делать через GetDIBits/SetDIBits


Дата: Июл 13, 2004 02:17:36

Зачем? Создал MemDC, скопировал туда все и передал диалогу.


Дата: Июл 13, 2004 17:44:16

Через что скопировать? Через BitBlt? Смысла никакого - любой CreateDC будет возвращать бесполезный handle, не имеющий никакого смысла в другом процессе. А через GetDIBits/SetDIBits можно передать данные самой картинки, и по ним потом восстановить картинку.


Дата: Июл 13, 2004 20:10:19 · Поправил: vinnie_pooh

jekyll настаивает на том, чтобы диалог настроек программы принадлежал процессу этой программы.
__Ranger
Обязательно делать настройки в другом .ехе? Тогда или внедряться в процесс, или через файл на диске.


Дата: Июл 13, 2004 23:59:47

>>Обязательно делать настройки в другом .ехе?

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

>>Тогда или внедряться в процесс,

Внедрение..Насколько это трудоемко? И где есть про это почитать?

>> или через файл на диске.

Ну вариантов по обмену данными хватает..


Дата: Июл 14, 2004 00:50:03 · Поправил: jekyll

__Ranger
Я не могу понять одной вещи: оба процесса принадлежать тебе (проги написаны тобой), что тебе мешает разработать интерфейс передачи между ними, имхо это настолько тривиально, что заморачиваться с внедрением в другой процесс заморачиваться не стоит.


Дата: Июл 14, 2004 03:05:27

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

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.051