在座有人有开发IE扩展的经验吗?这将包括代码示例,或链接到好的示例,或关于流程的文档,或任何东西。

我真的很想这么做,但我碰到了一堵巨大的墙,里面有糟糕的文档、糟糕的代码/示例代码/缺乏它们。你能提供的任何帮助/资源都将不胜感激。

具体来说,我想从如何从IE扩展中访问/操作DOM开始。

编辑,甚至更多的细节:

理想情况下,我想种植一个工具栏按钮,当点击时,弹出一个菜单,其中包含到外部网站的链接。我还想根据某些条件访问DOM并在页面上植入JavaScript。

在IE扩展中保存信息的最好方法是什么?在Firefox/Chrome/大多数现代浏览器中,你使用window。localStorage,但显然在IE8/IE7中,这不是一个选项。也许是SQLite DB之类的?可以假设。net 4.0将安装在用户的计算机上吗?

我不想使用Spice IE,因为我想构建一个与IE9兼容的IE。我也为这个问题添加了c++标签,因为如果用c++构建一个更好的话,我可以这样做。


当前回答

开发c# bho是一件非常痛苦的事情。它涉及大量烦人的COM代码和p/invoke调用。

我这里有一个基本完成的c# BHO,你可以自由地使用源代码来做任何你想做的事情。我之所以说“大部分”,是因为我从未弄清楚如何在IE保护模式下保存appdata。

其他回答

这显然是解决了,但对于其他用户,我建议使用SpicIE框架。我在此基础上做了自己的扩展。它只支持Internet Explorer 7/8官方版本,但我在Internet Explorer 6-10(从Windows XP到Windows 8消费者预览版)上进行了测试,结果很好。 不幸的是,在最新的版本中有一些bug,所以我不得不修复它们,并发布了自己的版本: http://archive.msdn.microsoft.com/SpicIE/Thread/View.aspx?ThreadId=5251

如果你不打算重新发明轮子,你可以试试IE的Add In Express。我已经使用该产品的VSTO的东西,它很好。此外,他们有一个有用的论坛和快速的支持。

我同意Robert Harvey的观点,c# 4.0改进了COM互操作。这是一段非常需要重写的旧c#代码。

http://www.codeproject.com/KB/cs/Attach_BHO_with_C_.aspx

这是通过避免ATL和使用Spartan COM来简化事情的尝试:

c++和COM让bho运行起来

我已经使用IE的web浏览器控件很多年了,在这期间,有一个名字一次又一次地出现在有用的帖子中:Igor Tandetnik

如果我正在开发一个扩展,我会瞄准一个BHO,并开始谷歌:

BHO Igor Tandetnik

OR

浏览器帮助对象Igor Tandetnik

他的帖子通常非常详细,他知道自己在说什么。

你会发现自己在COM和ATL编程上忙得不可开交。 要查看示例演练,请查看: http://msdn.microsoft.com/en-us/library/ms976373.aspx

我热情地向你推荐帕维尔·佐尔尼科夫在2002年发表的这篇文章!

http://www.codeproject.com/Articles/2219/Extending-Explorer-with-Band-Objects-using-NET-and

它基于Band对象的使用,并使用. net 2.0编译。 提供了源代码,并使用Visual Studio 2013很好地打开和编译。 正如你将在帖子评论中读到的,它在IE 11和Windows 7和Windows 10上运行得非常好。 它在Windows 7 + SP1和IE 11上运行得非常好 享受吧!