【问题标题】:How to create Internet Explorer sidebar extension in C#?如何在 C# 中创建 Internet Explorer 侧边栏扩展?
【发布时间】:2011-12-10 22:06:07
【问题描述】:

我想创建一个 IE 扩展 - 侧边栏(“资源管理器栏”)看起来就像 IE9 中的书签/收藏夹侧边栏,它应该在其中显示 HTML 网页。

我用谷歌搜索了几个小时,读了一些:

但我需要一个侧边栏 - 没有窗口或消息框。我希望看到一个简单的基本解决方案 - 稍后我会详细介绍。

我已经为 FF 和 Chrome 创建了一个扩展 - 他们的扩展开发中心比微软的要好得多。

请用简单的步骤告诉我应该怎么做。我想在 Visual Studio 2010 和 C# 中创建 IE 扩展。我不可能用 C++ 创建它。

编辑(2011-10-20):

我已经设法在How to get started with developing Internet Explorer extensions? 中完成了解决方案,但是:

  1. 无法正常工作:设置的单词根本没有突出显示,
  2. 我认为问题在于我使用的是 IE9 而不是 8,
  3. 该解决方案没有告诉我如何为 IE9 创建侧边栏

顺便说一句。我使用 Visual Studio 2010 Express (Visual C# 2010 Express) - 不是 Professional 或 Ultimate - 我认为项目的“调试”选项卡中没有“启动外部程序”选项。

请帮忙。

【问题讨论】:

  • 看起来是 stackoverflow.com/questions/5643819/… 的副本 - 使用 VS2010 和 C# 进行了详细解释。
  • @Conan:是的,而且这种工作应该在 .NET 4.0 及更高版本中完成,因为您现在可以将多个版本的 CLR 加载到进程中.
  • 出于性能原因,仍应避免在 IE 中使用 .NET。
  • @Conan:不,它不是重复的——我需要一个侧边栏而不是一种可以改变网页内容的插件。
  • 我对 Add-In Express 有一些经验:add-in-express.com/programming-internet-explorer 太棒了——您可以简单地开始添加功能,无需为低级实现细节而烦恼。

标签: c# internet-explorer sidebar


【解决方案1】:

我找到了一个完美的工作示例: http://code.msdn.microsoft.com/CSIEExplorerBar-ba8fe182/view/Reviews

很有趣,我用 Google 找不到它...

下载后解压文件并打开CSIEExplorerBar.sln。某些解决方案的项目无法导入 VS 2010 - 它只是安装程序项目,您不需要它们来运行 BHO。

转到项目的属性并在构建事件选项卡中将此文本放入“构建后事件命令行”(字面意思):

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /i "$(TargetDir)$(TargetFileName)"

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /unregister "$(TargetDir)$(TargetFileName)"

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" "$(TargetDir)$(TargetFileName)"

构建项目 - 您会收到错误,因为如您所见,第二个命令尝试取消注册 BHO,但尚未注册任何内容。您可以重新运行构建,不会出现错误。

打开 IE。打开查看菜单、资源管理器栏并单击“图像列表资源管理器栏” - 您应该会看到刚刚构建的资源管理器栏!

要让您的 BHO 显示 HTML 页面,您只需更改用户控件设计 - 添加 WebBrowser 控件并添加要显示到控件的页面的 URL。

详情

我已经为 Chrome 和 Firefox 创建了扩展程序。 IE 扩展是最糟糕的架构。文档很糟糕 - 它已经过时并且仅适用于 C++。 Chrome 和 Firefox 的扩展是基于 HTML/XUL 和 JavaScript 的 - 几乎每个 Web 开发人员都可以在几分钟内构建他/她自己的扩展!我认为在 IE 中要困难得多——你必须从字面上探索互联网才能找到任何对这项技术有用的信息。

正如您在此处所读到的 - http://msdn.microsoft.com/en-us/library/bb776819.aspx - 您必须使用名为 Registry 的神奇东西。这真的是他们可以选择存储扩展数据的最糟糕的事情。我仍然不知道应该在哪里添加有关作者或 BHO 版本的信息。如果有请回复:https://stackoverflow.com/questions/7926800/how-to-add-author-name-version-number-description-etc-to-browser-helper-objec

如果 BHO 未使用密钥签名 - 此解决方案中的 IEExplorerBar.snk,则 BHO 将无法工作。您可以非常轻松地在新项目中添加密钥 - 只需打开项目属性,“签名”选项卡 -“签署程序集”并添加新密钥。

文档非常陈旧,没有人对此做任何事情!

恕我直言,微软应该重新设计和重新编写 IE - 它的架构已经过时,不合时宜。

一些链接

添加工具栏按钮以打开您的浏览器栏:http://msdn.microsoft.com/en-us/library/aa753588%28v=VS.85%29.aspx#details_explorer

关于 x64 系统中注册表的一些信息: http://msdn.microsoft.com/en-gb/library/aa384232%28VS.85%29.aspx

关于 Interlop 命名空间 (SHDocVw):http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.ole.interop.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-06
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多