Подключение нескольких клиентов к одному Automation серверу

  • Автор темы jashilko
  • Дата начала
J

jashilko

#1
Задача такая: есть сервер COM, который обрабатывает события при помощи Automation Object, есть клиенты которые на это событие подписаны. Проблема в том, что при запуске нескольких клиентов, каждый из них создаёт свой экземпляр обработчика событий, то есть если вызвать событие на одном из клиентов, другие клиенты это событие не поймают.

Подключение в клиенте к COM происходит так:

[codebox] public
EventSink: IEventSink;
AutoTest: Iautom;
ConnectionPoint: IConnectionPoint;
Cookie: Integer;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
Container: IConnectionPointContainer;
begin
AutoTest := GetActiveOleObject('server.autom') as Iautom;
EventSink := TEvent.Create as IEventSink;
Container := AutoTest as IConnectionPointContainer;
OleCheck(Container.FindConnectionPoint(IEventSink, ConnectionPoint));
OleCheck(ConnectionPoint.Advise(EventSink, Cookie));
end;[/codebox]