【问题标题】:How do I consume events from a late-bound COM object?如何使用来自后期绑定 COM 对象的事件?
【发布时间】:2011-12-23 12:33:11
【问题描述】:

我有一个后期绑定的 COM 对象 (My.COMInterface),它在完成处理后会引发一个事件。如何从 VB6 代码中使用该事件?

如果我是早期绑定,我会将我的 COM 对象声明为 WithEvents,并编写一个普通的事件处理程序。如何使用后期绑定来实现这一点?

当前代码:

Dim comObject as Object

'Function to launch Process.
Public Function LaunchProcess() As Boolean
    Set comObject = CreateObject("My.COMInterface")

    LaunchProcess= comObject.CallProcess()
    ' Once this process has finished, it will raise an event 
    ' called ProcessingFinished - how do I consume it?
End Function

我目前知道的唯一方法是编写一个 C/C++ 桥来处理事件,如 this MSDN article 中所述。我希望有一个更简单的方法!

【问题讨论】:

标签: vb6 event-handling late-binding


【解决方案1】:

如果它是一个普通的 COM 对象,我在本机 VB6 中没有看到任何方法。 但是,如果对象是控件,则可以使用VBControlExtender 接口和ObjectEvent 事件。

【讨论】:

  • 普通 COM 对象恐怕。看起来这是不可能的,这是一种耻辱 - 为什么在 VBScript 中很容易,但在 VB6 中却不可能?!!
  • 我没有意识到 VBScript 支持后期绑定对象。如何为事件分配处理程序?
  • @Deanna 请参阅 RB 问题中提供的link 中的代码,在“Windows 脚本宿主解决方案”部分中
【解决方案2】:

查看 E. Morcillo 的 EventCollection Class v2.0 - Add event support to Collections

应该做你想做的以及更多。

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多