Использование OBJRef моникера для IPC.

Тема в разделе "VB", создана пользователем Thetrik, 28 фев 2021.

Метки:
  1. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    861
    В примере создается OBJRef моникер для VB6-формы к которому можно обращаться из других клиентских приложений:
    • Другое VB6 приложение;
    • 64 битное приложение на C++;
    • VBScript - HTA Application
    Все это работает как простой вызов метода объекта. COM делает всю работу по синхронизации и маршалингу через границы процессов. Если включен DCOM то можно даже между машинами делать такие вызовы.

    Достаточно создать моникер и передать его приложению (к примеру через командную строку):
    Код (Text):
    1.     Set cMoniker = CreateObjrefMoniker(Me)
    2.    
    3.     pName = cMoniker.GetDisplayName(CreateBindCtx(), Nothing)
    4.     sName = SysAllocString(pName)
    5. . . .
    6.  
    7.    ShellExecute(0, StrPtr("open"), StrPtr(sPath), StrPtr("""" & sName & """"), 0, vbNormalFocus)
    Из другого приложения объект получается посредством GetObject(либо MkParseDisplayName/BindToObject) и дальше с ним можно работать как с обычным объектом. Данный метод можно использовать для замены многопоточности - мультипроцессингом и в отличии от ActiveX EXE не требует регистрации на конечной машине.
     

    Вложения:

    • OBJRef (1).zip
      Размер файла:
      23,8 КБ
      Просмотров:
      202