如何在Delphi中使用ConnectionPoint?

如何在Delphi中使用ConnectionPoint?,delphi,excel,idispatch,iconnectionpoint,Delphi,Excel,Idispatch,Iconnectionpoint,我正在编写一个DLL,它通过IDispatch接口与Excel对话。我从VBA传入一个变量,该变量包含Application.Caller,我通过.pDispVal从中绘制IDispatch指针 我想知道的是如何通过IDispatch指针查询接口。我想设置一个连接点容器,并从中找到Excel的连接点。最终目标是将事物与Excel的Calculate事件联系起来,并能够操作Excel数据。Brian Long解释道: 其他资源: 我推荐Binh Ly的永恒卓越(Delphi)COM教程,其中

我正在编写一个DLL,它通过IDispatch接口与Excel对话。我从VBA传入一个变量,该变量包含
Application.Caller
,我通过
.pDispVal
从中绘制IDispatch指针

我想知道的是如何通过IDispatch指针查询接口。我想设置一个连接点容器,并从中找到Excel的连接点。最终目标是将事物与Excel的Calculate事件联系起来,并能够操作Excel数据。

Brian Long解释道:

其他资源:


我推荐Binh Ly的永恒卓越(Delphi)COM教程,其中包含了专门针对以下内容的章节

他还提供了一个生成EventSink代码的免费工具

尽管如此,我还是强烈地感觉到,如果您只想对Excel
应用程序
对象触发的事件做出反应,那么根本不需要这样做。您是否尝试过简单地使用Delphi类型库导入器为您生成的包装器对象?当然,您也可以编写自己的包装


再说一次,我还没有为Excel编写任何加载项,但我确实为Outlook和Word编写加载项,Excel在这方面应该没有太大的不同。

第三个条目,即gtro条目,很好地解决了这个问题。主要是Binh-Ly链接。在某些方面,我是一个德尔福新手我仍然有点茫然,但隧道尽头有一盏灯,我很确定那不是一列快速接近的火车的头灯。是的,平平的教程过去也是让我大开眼界的东西,大约在八年前……顺便说一句:当你谈论“一个与Excel对话的DLL”这实际上是一个COM服务器,还是您在使用从VBA调用的导出函数?我仍然感觉到,如果你把整个事情作为一个普通的插件来实现,你可能会更好,可能会丢掉VBA。目前的问题是在Delphi中用Herbert Danler的Excel Melf添加了C++已经做了什么。一旦你看过了,告诉我你是否仍然可以放下VBA的一面。