Com ActiveX控件中的OnReadyStateChange事件

Com ActiveX控件中的OnReadyStateChange事件,com,activex,Com,Activex,我编写了一个Firefox插件(仅与FF3 atm兼容),允许托管ActiveX控件。 在火焰开始之前-这不是这个问题的主要主题,插件的设计考虑到了安全性,所以它不会破坏我最喜欢的浏览器。如果您感兴趣,请访问 现在,我注意到,在IE中,所有ActiveX控件都有一个名为OnReadyStateChange的事件可用,但是,并非所有ActiveX控件的TypeLib中都列出了该事件。因此,我的插件无法为每个ActiveX控件注册此事件的处理程序 用OleView打开这样的控件,我也找不到OnRea

我编写了一个Firefox插件(仅与FF3 atm兼容),允许托管ActiveX控件。
在火焰开始之前-这不是这个问题的主要主题,插件的设计考虑到了安全性,所以它不会破坏我最喜欢的浏览器。如果您感兴趣,请访问

现在,我注意到,在IE中,所有ActiveX控件都有一个名为OnReadyStateChange的事件可用,但是,并非所有ActiveX控件的TypeLib中都列出了该事件。因此,我的插件无法为每个ActiveX控件注册此事件的处理程序

用OleView打开这样的控件,我也找不到OnReadyStateChange事件——这让我相信IE可能是为了让它工作而在这里“作弊”。当OleView显示这样一个处理程序(如Shockwave ActiveX控件)时,我为它注册处理程序没有问题

这种控件的一个例子是Microsoft的终端服务ActiveX。但这不是一个仅限于MS ActiveX控件的问题

我不是COM对象方面的专家,我是以错误的方式还是在错误的地点搜索事件?
现在我认为我做得对,因为OleView也找不到它,所以


我能不能像IE那样“作弊”并让这个活动成为现实?

是的,IE会作弊。你在IE中实际拥有的是在COM世界中我们称之为聚合对象的东西。IE将创建用于表示ActiveX对象的COM类实例,并将其与ActiveX类的实际实例聚合,从而创建复合对象

此组合似乎是具有新功能的单个对象


因此,我认为您根本不需要担心OnReadyStateChange。

谢谢!如果您能为我指出我需要做些什么来实现这样一个聚合,我也将不胜感激。在msdn上很难找到任何东西,除非您有一个API调用的名称作为开始。