写了一个简单的进程外com
建立一个简单的com工程,主要是用选择使用Executeable[Exe]
然后和建立进程内com完全一致。
写一个函数
STDMETHODIMP CSimple02::GetOSVersion(BSTR *bstrVersion)
{
// TODO: Add your implementation code here
::MessageBox(NULL,"Version","Version",0);
return S_OK;
}
然后就可以编译了,
下面proxy/stub程序
找到工程中的一个mk文件 运行nmake step02ps.mk,将创建一个名为Step02ps.dll动态连接库。
ok这样server端就建好了。
然后写个测试程序 client
// ComClient.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
// 加入comutil支持
#include <comutil.h>
#pragma comment( lib, "comsupp.lib" )
#include "COMOut.h"
#include "COMOut_i.c"
int _tmain(int argc, _TCHAR* argv[])
{
// 初始化
HRESULT hr = CoInitialize(NULL);
if(FAILED(hr))
{
printf("Coinitialize failed! hr=0x%x", hr);
return 0;
}
// 创建COM对象
CComQIPtr<ISimple02> pISimple02; // 我们定义的接口
CComBSTR bstrOS;
hr = CoCreateInstance(CLSID_Simple02, NULL, CLSCTX_ALL,IID_ISimple02, (void **)&pISimple02);
if(FAILED(hr))
{
printf("create com failed! hr=0x%x", hr);
CoUninitialize();
return 0;
}
// 获得操作系统
hr = pISimple02->GetOSVersion(&bstrOS);
if (FAILED(hr))
{
printf("fail/n");
CoUninitialize();
}
printf("The OS is %s/n", bstrOS);
// 释放分配的内存
CoUninitialize();
return 0;
}
当然com server是用注册了才能用的
进程外组件的注册使用:
step02.exe /regserver
注销使用:
step02.exe /unregserver
测试一下,将会弹一个对话框出来
简单的进程外com
最新推荐文章于 2020-12-20 22:36:29 发布