繁体   English   中英

带有C#的Internet Explorer 11扩展(BHO)

[英]Internet Explorer 11 Extension (BHO) with C#

我正在尝试将Internet Explorer 11的扩展名作为Visual C#中的浏览器帮助器对象编写。 我正在Windows 7上使用Visual Studio2013。凭借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();
        }
   }

}

我什至无法将此写入控制台。 我已经注册了IE,因此BHO正在被IE接收,并显示在“设置”菜单中的“管理加载项”下。

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

干杯!

如果您在“管理加载项”页面的列表中看到BHO,则它应该正在工作。 由于BHO通常受限于访问浏览器本身以外的所有内容,因此System.Diagnostics.Debug.WriteLin操作可能无法正常工作。 请尝试另一件事-尝试将下面的方法粘贴到方法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中获取示例。

希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM