gpt4 book ai didi

com - 如何使用没有 tlb 文件的进程外 COM 服务器

转载 作者:行者123 更新时间:2023-12-04 08:46:31 25 4
gpt4 key购买 nike

它是关于 Window COM 组件的。

  • Server.exe:32 位进程外 COM 服务器
  • CLSID_Application:Server.exe 中 COM 对象的 GUID
  • 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,即使我将 list 嵌入到 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>

    你对此有什么想法吗?

    编辑:
    事实证明,如果我为接口(interface)指定 tlbid 并将 list 嵌入到两个 exe 中,它确实有效

    最佳答案

    <comInterfaceExternalProxyStub>元素够吗?你不需要<comClass>吗?和 <typelib>元素也是?

    关于com - 如何使用没有 tlb 文件的进程外 COM 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2369181/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com