在VC 6.0下如何调用Delphi开发的进程内COM

源代码包中共有两个zip文件,其中DelphiCallVCCOM.zip为Delphi调用VC的COM组件,VCCallDelphiCOM.zip为VC调用Delphi的COM组件

因为本人的语言水平很差,考大学时150的总分,我考了个60分。外语也是,初中及格过一次,会考及格过一次。其它的时间好像从没有及格过。所以我不写文章,因我一百字的文章给我写,至少要出八九个错别字。哈哈….真是个马大哈。你别说我还真的姓马。所以下面的文章中有错误之处,请你老人家多多理解。谁叫你看我的文章了的。下面就谈正事吧!

本人接触COM的时间也不长,是看了本关于组件重用的书,才让我对COM产生性(兴)趣的。所以就想试试COM的二进制级重用好不好用。在开发公司项目的过程中,我就用COM方式写了一个数据库的操作。(用Delphi写的)。本想这项目到此完了。可是过了不久,老板叫写另一个小程序,我细致的分析了功能要求。哈哈,原来和我用COM开发的一个项目的数据操作部分一样。所以就想到重用。可是现在所要写的程序是在VC源程序基础上加入数据库操作。所以,怎样才能把用Delphi写好的COM用到VC上呀!经过查找资料,终于找到了,原来只要把Delphi写的COM所生成的IDL文件用MIDL.EXE编译生成.h和_i.c文件。这样VC就可以用了。可是这个MIDL.EXE文件真是不好用,到现在我还是不会用。我只有先在VC下生成一个ATL的工程文件ttt和一个空的接口文件,这样编译就生成了ttt.h,ttt.idl,ttt_i.c。哈哈….没办法,谁叫我不会用Midl.exe呀,只有作这个笨办法了。我把在Delphi下生成的rh.idl文件拷贝到ttt下并改名为ttt.idl编译。生成的ttt.h、ttt_i.c就是我要的了。这样就生成了想要的VC能调用的两个接口文件。下面是事例:

1、用Delphi5.0生成进程内的COM服务程序:

Delphi5.0编写进程内的COM服务程序我就不再这里多说.我在“文章事例"目录下生成的"madll.dpr", 就是一个用Delphi编写的COM程序,编译生成madll.idl和madll.dll文件。

2、用VC6.0调用COM服务接口:

把用Delphi5.0生成的madll.idl文件编译成.h和_i.c?的文件.如果不会用Midl.exe的。可用我上面所讲的方法进行。

生成macpp工程,是个对话框的。在系统中加入所生成的madll.h文件。这样你就可以在ClassView中看到ImaCom接口申明了。

在madlg.cpp中定义

//申明接口返回和接口类型
HRESULT hr;
ImaCom *pmaCom = NULL;
在OnButton1中调用
void CMacppDlg::OnButton1()
{
// TODO: Add your control notification handler code here
// 初始化COM
hr = CoInitialize(0);
// 使用SUCCEEDED 宏并检查我们是否能得到一个接口指针
if(SUCCEEDED(hr))
{
  hr = CoCreateInstance( CLSID_maCom, NULL, CLSCTX_INPROC_SERVER,
IID_ImaCom,
(void**) &pmaCom);//生成接口调用类场
pmaCom->ShowMa(NULL,(WORD)GetSafeHwnd());//调用COM方法。
  pmaCom->Release();
  CoUninitialize();
}
}

在运行此程序前必需先对madll.dll进行注册,否则调用会不成功。

注册只要在“开始”-“运行”对话框中输入:regsvr32 madll.dll。确定就行。当然在regsvr32 后要跟的是madll.dll所在的目录。要注销时是这样 regsvr32 madll.dll /u就行了。

好了。现在编译macpp并运行就可以进行接口的调用了。这就是简单的在VC6.0下对Delphi5.0编写的COM进行的接口调用。反过来也可以在VC6.0下开发COM,在Delphi5.0下进行调用。本文所附带的代码中给出了示范。

谢谢大家能抽时间读,我将努力学好国文。至少在以后的文章中会少出现几个错别字。

本文配套源码

时间: 2024-12-31 20:02:58

在VC 6.0下如何调用Delphi开发的进程内COM的相关文章

DES算法及其在VC++6.0下的实现(下)

在<DES算法及其在VC++6.0下的实现(上)>中主要介绍了DES算法的基本原理,下面让我们继续: 二.子密钥的生成 64比特的密钥生成16个48比特的子密钥.其生成过程见图: 子密钥生成过程具体解释如下: 64比特的密钥K,经过PC-1后,生成56比特的串.其下标如表所示: PC-1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 6

在VC++6.0下可以运行,但是移植到VS2003之后就不行了

问题描述 用DBLibrary和数据库连接有一个例子physic在VC++6.0下可以运行,但是移植到VS2003之后就不行了,不知道为什么,应该怎么设置?程序地址见file:///E:/HLA/SQL/VC++中使用%20DB-Library%20编程(SQL%20Server)%20一/VC++中使用%20DB-Library%20编程(SQL%20Server)%20-%20VC知识库文章.htm 解决方案 解决方案二:属性里面设置静态链接

DES算法及其在VC++6.0下的实现(上)

摘要: 本文介绍了一种国际上通用的加密算法-DES算法的原理,并给出了在VC++6.0语言环境下实现的源代码.最后给出一个示例,以供参考. 关键字:DES算法.明文.密文.密钥.VC: 本文程序运行效果图如下: 正文: 当今社会是信息化的社会.为了适应社会对计算机数据安全保密越来越高的要求,美国国家标准局(NBS)于1997年公布了一个由IBM公司研制的一种加密算法,并且确定为非机要部门使用的数据加密标准,简称DES(Data Encrypton Standard).自公布之日起,DES算法作为

在VC++ 6.0下利用消息实现内部进程通讯

内部进程间通讯和数据交换有多种方式:消息.共享内存.匿名(命名)管道 .邮槽.Windows套接字等多种技术.其中利用消息机制实现IPC虽然同其他方法 相比有交换的数据量小.携带的信息少等缺点,但由于其实现方便.应用灵活而 广泛应用于无须大量.频繁数据交换的内部进程通讯系统之中,尤其是对于在上 层主控软件与底层工作软件之间的命令与响应上更能充分显示其良好的性能.本文就通过编制一个主控软件和一个受其操作的底层工作软件来阐述如何用VC++6.0 通过消息来实现内部进程通信. 一.Windows消息机

VC++ 6.0下GIS打印输出控制的实现

VC++6.0中用应用向导生成新程序时,可以在应用向导Step4对话框中选择Printing and Print preview选择包括了基本打印和打印预览支持.但这些打印功能在MM_TEXT模式下打印出的文件尺寸大小发生了变化,比屏幕上显示的小得多. 我们在VC++中实现绘图时最方便.最常用的绘图模式为MM_TEXT.如何对打印输出进行有效的控制?尤其是在GIS中,是我们经常所面临的问题.笔者通过实践,提出了自己的做法,再此与广大读者共同探讨. 首先明确的是在MM_TEXT模式下很难实现象素坐

C#下的webservcie 实现代码和 在vc和python下的调用实现

web C#下的webservcie 实现代码,很简单一看就清楚了是完成什么样的功能了 using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Web;using System.Web.Services; namespace WebHelloZ5{ /// <summary> /// Service1 的摘要

《C语言课程设计》一1.1 VC 6.0简介

1.1 VC 6.0简介 Visual C++ 6.0是Microsoft公司推出的开发Win32程序的集成开发环境,可将"高级语言"翻译为"机器语言(低级语言)",并支持面向对象可视化编程.它具有程序框架自动生成.灵活方便的类管理.代码编写和界面设计集成交互操作.可开发多种程序等优点,而且通过简单的设置即可使其生成的程序框架支持数据库接口.OLE和WinSock网络. Visual C++ 6.0, 简称VC 6.0或VC 6,是微软公司于1998年推出的Visu

在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口

一.概述 GDI+的应用使得平面图形图象编程变的更加容易,本文以一个基于对话框的时钟程序为例,在VC6.0中调用*.png图片实现半透明渐变窗口,该程序实现了指针式和数字式两种时钟显示方式.窗口实现了半透明渐变窗口.窗口拖动无移动矩形框.隐藏了任务栏窗体按钮等. 效果图如下: 图一 程序执行后与WindowXP桌面背景效果图 二.准备工作 1.图片资源准备工作.首先在Photoshop中编辑好时钟的背景.时针.分针以及数字时钟显示方式的所有图片,如下图:将这些图片保存成为带透明通道的.png格式

利用Delphi开发网络数据库应用

Delphi 是具可视化界面的面向对象编程语言,它以其功能强大.简便易用等诸多特性,深受编程人员的欢迎.Delphi 中提供了数据库引擎 BDE(Borland Database Engine),并内含众多的数据库调用构件,为编程人员开发客户/服务器应用程序提供了方便.通常情况下,利用 Delphi 开发数据库应用程序,可以使用TTable.TDataSource.TDBEdit.TDBNavigator等构件.只要正确设置了构件的某些属性,再编写必要的程序代码对一些特定事件进行处理,就能够完成