Internet Explorer 11 Extension (BHO) with C#

本文关键字:with BHO Explorer Extension Internet | 更新日期: 2023-09-27 18:31:38

我正在尝试将Internet Explorer 11的扩展编写为Visual C#中的浏览器帮助程序对象。我在 Windows 7 上使用 Visual Studio 2013。凭借这里的zilch经验,我遇到了一堵砖墙,试图离开地面。 我不完全确定如何为 BHO 实现接口 IObjectWithSite。我已经尝试了一些基本的东西来让我开始,但它不起作用......有什么想法吗?

using System;
using System.Runtime.InteropServices;
using SHDocVw;
using mshtml;
using System.Windows.Forms;
namespace IeAddOnDemo
{
    [ComVisible(true),
    Guid("9AB12757-BDAF-4F9A-8DE8-413C3615590C"),
    ClassInterface(ClassInterfaceType.None)]
    public class BHO : IObjectWithSite
    {
        public void SetSite(object site)
        {
            System.Diagnostics.Debug.WriteLine("hello");
        }
        public void GetSite(ref Guid guid, out IntPtr ppvSite)
        {
            System.Diagnostics.Debug.WriteLine("hello");
            ppvSite = new IntPtr();
        }
   }

}

我什至无法将其写入控制台。当我注册BHO时,IE正在选择BHO,它出现在"设置"菜单中的"管理加载项"下。

希望

有了这个BHO,我将尝试访问IE,然后希望操纵DOM。这是一种陌生的做事方式(我习惯了Eclipse RCP,Linux),所以我希望有人能为我指出正确的方向!

干杯!

Internet Explorer 11 Extension (BHO) with C#

如果您在

"管理附加组件"页面列表中看到BHO,那么它应该可以工作。System.Diagnostics.Debug.WriteLin操作可能无法正常工作,因为BHO通常被限制访问浏览器本身以外的所有内容。尝试另一件事 - 尝试将下面的方法粘贴到方法GetSite/SetSite方法中。

MessageBox.Show("Bho is working");

之后,如果显示消息框 - 它们被调用并且 BHO 工作。还要尝试查看在任务管理器中启动了哪些IE进程,AFAIK BHO分配了一个单独的进程。

关于 DOM 操作 - 尝试从 CodeProject 或其他 SO 答案中获取样本,例如来自 http://www.codeproject.com/Articles/149258/Inject-HTML-and-JavaScript-into-an-existing-page-w。

希望这会有所帮助。