我正在编写一个 DLL,它通过其 IDispatch 接口与 Excel 对话。从 VBA 中,我传入一个 Variant 包含Application.Caller
我从中绘制 IDispatch 指针通过.pDispVal
.
我想知道的是如何通过 IDispatch 指针查询接口。我想设置一个连接点容器,并从那里找到一个到 Excel 的连接点。最终目标是将事物与 Excel 的计算事件联系起来,并能够操作 Excel 数据。
我正在编写一个 DLL,它通过其 IDispatch 接口与 Excel 对话。从 VBA 中,我传入一个 Variant 包含Application.Caller
我从中绘制 IDispatch 指针通过.pDispVal
.
我想知道的是如何通过 IDispatch 指针查询接口。我想设置一个连接点容器,并从那里找到一个到 Excel 的连接点。最终目标是将事物与 Excel 的计算事件联系起来,并能够操作 Excel 数据。
Brian Long 解释: http: //www.blong.com/Conferences/IConUK2000/DelphiMoreAutomation/More%20Automation%20In%20Delphi.htm#Events
其他资源:
我会推荐 Binh Ly 在http://www.techvanguards.com/上的永恒优秀的 (Delphi) COM 教程,其中包括完全致力于IConnectionPoint
和相关机制的章节。
他还提供了用于生成 EventSink 代码的免费工具。
Application
不过,我有一种强烈的感觉,如果您只想对 Excel对象触发的事件做出反应,那么这根本就没有必要。您是否尝试过简单地使用 Delphi 类型库导入器为您生成的包装对象?当然,您也可以编写自己的包装器。
再说一次,我实际上还没有为 Excel 编写任何插件 - 但我确实为 Outlook 和 Word 编写插件,而 Excel 在这方面确实应该没有太大的不同。