Конференция "Corba" » Подключение к ком на удалённой машине [Delphi, Windows]
 
  • jashilko © (08.05.09 10:45) [0]
    Имеется сервер автоматизации в виде 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));

  • jashilko © (08.05.09 10:46) [1]
    инициализация сервера:

     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);

  • SPeller © (10.05.09 14:28) [2]
    Лучше забудь :)
    Но если мне не изменяет память, то чтобы сервер активировался имеющийся, а не запускался новый, то сервер должен быть запущен от имени учетки, отличной от интерактивной, т.е. от той, под которой ты работаешь.
  • speller © (10.05.09 14:33) [3]
    Я на этом собаку съел, и решил нафиг отказаться :) Стал копать в сторону ручной передачи данных между ком-объектами вместо стандартного дкома, дабы уйти от его системы безопасности.
  • jashilko © (13.05.09 11:08) [4]
    Вручную это как?
  • SPeller © (13.05.09 11:45) [5]
    В соседней ветке описано как я пытаюсь сделать )
 
Конференция "Corba" » Подключение к ком на удалённой машине [Delphi, Windows]
Есть новые Нет новых   [118639   +35][b:0][p:0.001]