gpt4 book ai didi

com - 使用 Windows 运行时模板库 (WRL) 的进程外经典 COM EXE

转载 作者:行者123 更新时间:2023-12-04 15:23:14 27 4
gpt4 key购买 nike

我已经按照这里的例子:http://msdn.microsoft.com/en-us/library/vstudio/jj822931.aspx使用 Windows 运行时模板库 (WRL) 创建进程内经典 COM DLL。我还可以修改代码以将 DLL 作为 COM 代理运行(包装在 DllHost.exe 中)。

但是,我找不到使用 WRL 创建进程外 COM EXE 的方法。这里有一个使用准系统 COM API 的简单示例:http://www.codeproject.com/Articles/3173/A-simple-yet-debuggable-COM-skeleton-code ,但我想知道如何利用 WRL 来简化它。

谢谢。

最佳答案

是的,有可能。我刚弄了一个工作。与实现进程内 coclass 相比,这是所需的基础知识。

  • 使用 WRL::RuntimeClass 实现你的 coclass,就像你对进程内类一样。 ( https://msdn.microsoft.com/en-us/library/jj822931.aspx )
  • 在您的主函数中,使用 WRL::Module ::Create() 创建一个模块对象,并在启动时调用 module.RegisterObjects(),在关闭时调用 module.UnregisterObjects() 和 module.Terminate()。
  • 您需要构建一个 DLL 来托管代理:https://msdn.microsoft.com/en-us/library/windows/desktop/ms688707(v=vs.85).aspx
  • 静态注册:请注册代理 stub 的接口(interface)和 CLSID。不要静态注册你的 coclass。
  • 在客户端中,当您调用 CoCreateInstance 时,请务必使用适当的 CLSCTX。 (当托管模型对客户端不重要时,我使用 CLSCTX_ALL。)

  • (我知道已经快 4 年了,但本周我也有同样的问题。)

    关于com - 使用 Windows 运行时模板库 (WRL) 的进程外经典 COM EXE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19240953/

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