當(dāng)前位置:首頁 > IT技術(shù) > Web編程 > 正文

.net 內(nèi)嵌 GeckoWebBrowser (firefox) 核心瀏覽器
2022-02-14 14:14:28

引用nuget包:

注意:Geckofx45 nuget包必須是最后引用,否則初始化會出錯

簡單示例:

復(fù)制代碼
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);  //先獲取到j(luò)query對象


            //executor.ExecuteJQuery("$('#a')");    //然后執(zhí)行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;
        }
    }
}
復(fù)制代碼

?

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務(wù)立即開通 >