Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Подключение к com на удалённой машине


Автор: jashilko 8.5.2009, 10:03
Теперь у меня вторая проблема:

Имеется сервер автоматизации в виде exe, имеются несколько клиентов которые к нему подключаются и должны получать события. То есть один клиент по нажатию кнопки событие генерирует, и все! клиенты его получают.

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

У клиентов есть функция подключения GetActiveObject, если объект получили, то всё здорово, если нет - создаём. Если клиент удалён, используем функцию CreateRemoteComObject но она именно создаёт новый, она не подключается к уже существующему.

Почему так и в чём решение?

Подключение клиента:

 GetActiveObject(CLASS_autom, nil, ActiveObj);

Код

 if ActiveObj <> nil then
   AutoTest := ActiveObj as Iautom
 else
   AutoTest := Coautom.Create;
 EventSink := TEvent.Create as IEventSink;
 Container := AutoTest as IConnectionPointContainer;
 OleCheck(Container.FindConnectionPoint(IEventSink, ConnectionPoint));
 OleCheck(ConnectionPoint.Advise(EventSink, Cookie));




инициализация сервера:

Код

 inherited Initialize;
 FConnectionPoints := TConnectionPoints.Create(Self);
 if AutoFactory.EventTypeInfo <> nil then
   FConnectionPoints.CreateConnectionPoint(AutoFactory.EventIID,
     ckMulti, EventConnect);
 RegisterActiveObject(Self as IUnknown, CLASS_autom,
   ACTIVEOBJECT_WEAK, FObjRegHandle);


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)