Как использовать сервер COM из процесса без его tlb файла

Это о COM-компоненте Окна.

  • Server.exe: сервер COM из процесса на 32 бита
  • CLSID_Application: GUID COM-объекта в Server.exe
  • Client.exe: клиентское приложение на 64 бита, которые используют Server.exe способом без реестров.

Как мы знаем, exe не может использоваться в качестве COM-компонента без реестров, для имитации такого поведения, я запускаю, Server.exe обрабатывает меня путем обеспечения точного тракта:

  • CreateProcess ("Server.exe")
  • IClassFactory* pFactory = CoGetClassObject (CLSID_Application)
  • pFactory-> CreateInstance (ppAppObject);

Это работает, если у меня есть Server.tlb зарегистрированный, но после нерегистра Server.tlb, этому просто не удалось создать ppAppObject, даже при том, что я встраиваю декларацию и в Server.exe и в Client.exe:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="Server.tlb">
  <typelib tlbid="{DAC4A4C9-F84C-4F05-A7DC-E152869499F5}" version="1.0" helpdir=""></typelib>
</file>
<comInterfaceExternalProxyStub name="IApplication" iid="{D74208EA-71C2-471D-8681-9760B8ECE599}" tlbid="{DAC4A4C9-F84C-4F05-A7DC-E152869499F5}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
</assembly>

У Вас есть какая-либо идея об этом?

Править: Оказывается, что это действительно работает, если я указываю tlbid для интерфейсов и встраиваю декларацию в обоих exe

8
задан Dmitry 2 May 2012 в 12:16
поделиться

1 ответ

Достаточно ли элемента ? Не нужны ли вам также элементы и ?

3
ответ дан 6 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: