2015-03-02 83 views
2

我正在开发一个BHO,目前在IE11中,它使用确定的CLSID搜索<object>标签,替换文档中的特定ActiveX对象。IE11 BHO:替换HTML文档中的ActiveX对象

我看着处理OnDocumentComplete事件,使用标准的HTML接口搜索所有的“对象”标签,我成功地取代了它们;我检查了DOM Explorer,新的CLSID在那里。

现在,这种方法存在一个重要的缺陷,使其不能正常工作。当我收到OnDocumentComplete事件时,浏览器已经实例化了文档中由CLSID指定的DLL,将我替换的新CLSID完全无用。

这是我认为由于加载文档(即ReadyState = 2)后立即发生ActiveX加载,而我收到ReadyState = 4的OnDocumentComplete事件。

有谁知道这种“ActiveX对象替换”是否可以使用标准IE接口实现?我正在使用C++。

回答

1

如果我关注你,你试图用另一个特定的ActiveX控件替换一个特定的ActiveX控件,基于ClSID?如果这是正确的,你有没有考虑使用Phoenix bit

希望这有助于...

- 兰斯

+0

非常感谢你,阿姆斯特朗非常有趣的信息。但是,更准确地说,我需要按照HTML文档(它是URL选择性的)而不是“全局”来完成它。 – 2015-03-03 14:52:32

+1

我不知道任何允许您即时截获文档的服务,尽管给定的可用接口数量有所不同(https://msdn.microsoft.com/zh-cn/library/jj206442(v=vs) .85).aspx),它是有道理的,可能存在。但是,鉴于最近缺乏对平台C++方面的关注,似乎有理由认为事情正在朝着这个方向发展。也许修改源代码以使用Powershell或其他类似grep的实用程序来使用备用CLSID?我想代理拦截/重写也可能奏效,但这超出了我微薄的技能。 – 2015-03-03 15:14:00