我正在编写一个 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 在这方面确实应该没有太大的不同。