如何用Delphi调用由VC开发的ATL/COM服务,并响应其事件

现在有一个由VC开发的ATL/COM服务(EXE或DLL形式均可),该服务提供了一个方法及一个事件。
现欲使用Delphi来调用该服务,方法就已经可以正常使用了,但是不知道怎样响应事件(使用VB及VC的调用都已经可以正常使用该服务的方法及事件了)。

服务提供的方法及事件如下(VC中的定义):
方法:
  SetData(LONG iData);

事件:
  ReceiveData(LONG iData);
-------------------------------------------------------------------------------------------
如果 COM Server 可以被 Delphi 自动封装就很简单:
 Component | Import ActiveX Control ... |选择 或 Add | Install ...

 Project | Import Type Libray ...|选择 或 Add | Install ...
然后
 当普通控件用,直接挂接事件。

如果不能:
 VB及VC都可以接入事件,那应该是个连接点。
 1. 实现这个连接点所关联的回调接口;
 2. 获得 COM Server 实例;
 3. 通过 QueryInterface(IConnectionPointContainer) 获得连接容器,然后挂接实例(回调接口的实例)
 ComObj 单元中有 InterfaceConnect/InterfaceDisconnect 来完成上述 3 过程。
------------------------------------------------------------------------------------------------------------
 已经做好了,就是使用Delphi的import type library的add/install功能,直接就可以响应事件了。

谢祥选【小宇飞刀(xieyunc)】
原文地址:https://www.cnblogs.com/xieyunc/p/2793713.html