Передать объект в другой процесс

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Передать объект в другой процесс

Сообщение tyomitch » 18.11.2004 (Чт) 9:34

У меня есть два процесса, над которыми есть полный контроль.
В первом есть объект.
Требуется передать его во второй процесс.
Знаю, что для этого требуется создание пары proxy/stub, и что COM это делает сам, если есть необходимая информация о типах.
Однако, что конкретно вызывать, чтобы он создал эту пару?

Примечание 1: ROT не подходит, т.к. одновременно может быть несколько таких объектов.
Примечание 2: Пара CreatePointerMoniker/BindMoniker не подходит, т.к. возникает та же самая проблема с передачей моникера в другой процесс.
Примечание 3: Вроде бы подходит CoGetStdMarshalEx, но с ним вообще непонятно, что делать - документация запутанная, а примеров не нашёл.
Изображение

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 18.11.2004 (Чт) 12:13

Сумбурно...
процессы на одной машине?

что за объект?

ЗЫ Что такое ROT?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.11.2004 (Чт) 16:32

1. Вообще да, но с точки зрения RPC это не должно иметь значения.
2. Просто хочу передать объект из одной программы в другую, не персистируя его.
3. Running Object Table - то, к чему обращается GetObject.
Изображение

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 19.11.2004 (Пт) 10:08

Чтобы передать объект первого процесса во второй процесс, этот второй процесс должен узнать о первом процессе. Тогда - это обычная передача СОМ указателя. И ничего сложного нет - СОМ сама все сделает.

Также посмотри в сторону не CreatePointerMoniker/BindMoniker, а CreateObjrefMoniker/BindMoniker. Этот моникер имеет визуальное представление и может быть передан как бинарные данные.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.11.2004 (Пт) 10:15

Vi, я надеюсь что ты мне поможешь :-)

1. Какой именно указатель передавать? У меня есть, скажем, pUnk самого объекта. Его передавать, очевидно, бесполезно. А что передавать тогда?

2. Спасибо, попробую... А без моникеров не получится? Хотелось бы что-то типа функции CreateMarshaledPointer([in] hProcess, [in] pUnk, [out] *pUnkMarshaled)
Изображение

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 19.11.2004 (Пт) 11:53

to tyomitch
если тема жива вот пара сатей с RSDN

http://www.rsdn.ru/article/com/monikers.xml

http://www.rsdn.ru/article/com/marsh.xml

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.11.2004 (Пт) 15:10

За статьи спасибо... Как сделать через моникер, понятно, и более того - работает; как сделать без него - ещё не понял. В статье перечисляются какие-то недокументированные функции и интерфейсы, но без примера использования...

Кстати, статья про маршалинг, очевидно, основана на http://www.microsoft.com/msj/0199/com/com0199.aspx ("творческий перевод")
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList