.net 内嵌 GeckoWebBrowser (firefox) 核心浏览器

引用nuget包:

注意:Geckofx45 nuget包必须是最后引用,否则初始化会出错

简单示例:

using Gecko;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        GeckoWebBrowser gecko;
        public Form1()
        {
            InitializeComponent();

            Xpcom.Initialize("Firefox");

            gecko = new GeckoWebBrowser();
            gecko.CreateControl();

            gecko.NoDefaultContextMenu = true; //禁用右键菜单

            gecko.Dock = DockStyle.Fill;
            panel1.Controls.Add(gecko);
            gecko.ProgressChanged += Gecko_ProgressChanged;
            gecko.CreateWindow += Gecko_CreateWindow;
            gecko.DocumentCompleted += Gecko_DocumentCompleted;
            gecko.Navigate("http://www.baidu.com");


        }

        private void Gecko_DocumentCompleted(object sender, Gecko.Events.GeckoDocumentCompletedEventArgs e)
        {
            //var executor = new Gecko.JQuery.JQueryExecutor(gecko.Window);  //先获取到jquery对象


            //executor.ExecuteJQuery("$('#a')");    //然后执行jquery的代码
            using (AutoJSContext context = new AutoJSContext(gecko.Window))
            {
                string result;
                context.EvaluateScript("3 + 2;", out result);
                context.EvaluateScript("'hello' + ' ' + 'world';", out result);
            }


            progressBar1.Value = 0;
        }

        private void Gecko_CreateWindow(object sender, GeckoCreateWindowEventArgs e)
        {
            e.InitialHeight = 500;
            e.InitialWidth = 500;
        }

        private void Gecko_ProgressChanged(object sender, GeckoProgressEventArgs e)
        {
            if (e.MaximumProgress == 0 )
                return;

            var value = (int)Math.Min(100, (e.CurrentProgress * 100) / e.MaximumProgress);
            if (value == 100)
                return;
            progressBar1.Value = value;
        }
    }
}
原文地址:https://www.cnblogs.com/IWings/p/7527304.html