简单的进程外com

 写了一个简单的进程外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

测试一下,将会弹一个对话框出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值