32位com调用64位进程外com的例子

资料参考:https://blog.csdn.net/liutao_94520/article/details/80803569

一、 创建进程外Com组件
1) 创建ATL项目:创建项目TestComExe;注意选择exe类型,支持代理/存根,如下图所示:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
此处勾选【允许合并代理/存根代码】,则仅创建一个TestComExe工程
若不勾选【允许合并代理/存根代码】,则将创建一个TestComExe和一个TestComExePS工程

2) 添加Alt简单对象:右击项目TestComExe->添加->类->ATL简单对象->添加;在弹出的简单对象向导中有8个编辑框,
在第一个编辑框中添加类名称:TestClass,其他编辑框会同步命名;最后的ProgID(此为接口标记)必须自己命名
现命名为:TestComExe.TestClass;最后点完成。弹出窗口是否覆创建代理/存根(proxy/stub)DLL
在这里插入图片描述

3) 添加接口:在类视图中找到ITestClass,右击->添加->添加方法;在向导界面中添加方法名称和参数:
新增接口方法如下:
在这里插入图片描述

二、 注册组件和代理/存根
注册组件:参见上一篇《COM注册注销》
注册代理/存根:参见上一篇《COM注册注销》

三、 实例化外部组件接口
方法一:创建唯一实例(调用结束,进程立刻退出)
HRESULT hr = S_FALSE;
hr = hr = CoCreateInstance(
CLSID_TopologyPretreatment,
NULL,
CLSCTX_LOCAL_SERVER,
IID_ITopologyPretreatment,
(void**)&m_pTopPre);

方法二:创建多个实例(调用结束,进程延迟退出)
HRESULT hr = S_FALSE;
IClassFactory* pFactory;
hr = CoGetClassObject(CLSID_TopologyPretreatment, CLSCTX_LOCAL_SERVER, NULL, IID_IClassFactory, (LPVOID*)&pFactory);
hr = pFactory->CreateInstance(NULL, IID_ITopologyPretreatment, (void**)&m_pTopPre);

猜你喜欢

转载自blog.csdn.net/qq_39116201/article/details/83716082
今日推荐