加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 02:27:41 所属栏目:Windows 来源:网络整理
导读:我按照这里的示例: http://msdn.microsoft.com/en-us/library/vstudio/jj822931.aspx使用Windows运行时模板库(WRL)创建进程内经典COM DLL.我也可以修改代码来运行DLL作为COM代理(包含在DllHost.exe中). 但是,我找不到使用WRL创建进程外COM EXE的方法.这里有
我按照这里的示例: 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来简化它.

谢谢.

解决方法

对的,这是可能的.我只有一个工作.与实现in-proc coclass相比,这是所需的基础知识.

>使用WRL :: RuntimeClass以与进程内类相同的方式实现coclass. (https://msdn.microsoft.com/en-us/library/jj822931.aspx)
>在main函数中,使用WRL :: Module< OutOfProc> :: Create()创建模块对象,并在启动时调用module.RegisterObjects(),并在关闭时调用module.UnregisterObjects()和module.Terminate().
>您需要构建一个DLL来托管代理:https://msdn.microsoft.com/en-us/library/windows/desktop/ms688707(v=vs.85).aspx
>静态注册:注册接口和代理存根的CLSID.请勿静态注册您的coclass.
>在客户端中,当您调用CoCreateInstance时,请确保使用适当的CLSCTX. (当托管模型对客户端不重要时,我使用CLSCTX_ALL.)

(我知道已经差不多4年了,但本周我也有同样的问题.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读