cplusplus

DCOM做出来了

上一篇 / 下一篇  2011-07-12 15:34:29 / 个人分类:COM编程

哈哈,努力了几天,总算做出简单的DCOM程序了

开发环境VC6

虚拟机VirtualBox,虚拟机内地IP:192.168.1.108,

192.168.1.244

本机IP:192.168.5.14

子网掩码都是255.255.255.240创建ATL COM AppWizard

插入ATL对象

选择Simple Object,单击Next如下图

在Short Name中输入DComtest

确定.

在接口中添加如下方法

Add

([in] long n1, [in] long n2, [out, retval] long *pVal)

 

 

方法中实现两个数相加

*pVal = n1 + n2;

F7.

 

创建基于对话框的应用程序,名字为TestDcom

 

StdAfx.h中加入#import "..\\Simple33/Simple33.tlb" no_namespace

在一个按钮事件中输入如下代码

CTestDcom::OnTest()

{

CLSID clsid;

      IDComtest *dct = NULL;

      

      COSERVERINFO ServerInfo={0,L"192.168.1.108",NULL,0};

      MULTI_QI MultiQi = {&__uuidof(IDComtest),NULL,NOERROR};

 

      CoInitialize(NULL);

      HRESULT hr;

      hr = CLSIDFromProgID(OLESTR("Simple33.DComtest"), &clsid);

      

      if(FAILED(hr))

      {

             MessageBox("获取ID失败");

             CoUninitialize();

      }

      

//    hr = CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, __uuidof(IDComtest), (LPVOID*)&dct);

 

 

      MultiQi.pItf = dct;

      hr = CoCreateInstanceEx(clsid, NULL, CLSCTX_REMOTE_SERVER, &ServerInfo, 1, &MultiQi);

//    CoGetClassObject(clsid, CLSCTX_REMOTE_SERVER, NULL, __uuidof(IDComtest), (LPVOID *)&dct);

      dct = (IDComtest*)(MultiQi.pItf);

 

      if(FAILED(hr))

      {

             MessageBox("创建失败");

             CoUninitialize();

             return ;

      }

/*

      if (dct == NULL);

      {

             MessageBox("接口指针错误");

             return ;

      }

      */

//    dct = dct->QueryInterface(&__uuidof(IDComtest));

      //    ie->Advice(&sink.Fire_Result(5));

      long adv = 0;

      int ret;

      ret = dct->Add(1, 2);

//    dct->raw_Add(1, 2, &adv);

      char buff[10] = {0};

      itoa(ret, buff, 10);

//    itoa(adv, buff, 10);

      MessageBox(buff);

      dct->Release();

      dct = NULL;

      CoUninitialize();

}

 

Simple33.exe复制到虚拟机中

运行cmd

进入Simple33.exe的目录

Simple33 /RegServer注册

 

在本机中运行DCOMCNFG命令

找到组件服务->计算机->我的电脑->DCOM配置->Simple33”,配置如下,只选择"在以下计算机中使用应用程序",输入IP:

192.168.1.108,确定

运行TestDcom.exe,运行结果


TAG: DCOM编程

 

评分:0

我来说两句

Open Toolbar