C# 关于浏览器——WebKit篇

最近要写一个浏览器包裹一个网站,试了各种浏览器插件,记录一下。

用了WebKit.net,这个复制了它的Dll什么的一通操作,最终这样:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using WebKit;

namespace casicloud
{
    public partial class mainForm : Form
    {
        private WebKit.WebKitBrowser browser = new WebKitBrowser();
        public mainForm()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {            
            browser.Dock = DockStyle.Fill;
            //browser.NewWindowRequest += new NewWindowRequestEventHandler(browser_NewWindowRequest);
            browser.NewWindowCreated += new NewWindowCreatedEventHandler(browser_NewWindowCreated);
            
            //browser.DocumentCompleted+=new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
            panel1.Controls.Add(browser);
            browser.IsWebBrowserContextMenuEnabled = false;
            browser.ContextMenuStrip= contextMenu;
            browser.Navigate("http://localhost");            
        }

        void browser_NewWindowCreated(object sender, NewWindowCreatedEventArgs e)
        {            
            e.WebKitBrowser.Navigating += new WebBrowserNavigatingEventHandler(WebKitBrowser_Navigating);            
            this.Controls.Add(e.WebKitBrowser);
        }
        
        void WebKitBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {            
            WebKitBrowser subBrowser = (WebKitBrowser)sender;           
            subBrowser.Stop();
            subBrowser.Dispose();
            this.Controls.Remove(subBrowser);
            browser.Navigate(e.Url.ToString());
        }

        //退出系统
        private void MainMenu_System_Quit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        //前进
        private void MainMenu_Option_Forward_Click(object sender, EventArgs e)
        {
            browser.GoForward();
        }

        //后退
        private void MainMenu_Option_Back_Click(object sender, EventArgs e)
        {
            browser.GoBack();
        }

        //刷新
        private void MainMenu_Option_Refresh_Click(object sender, EventArgs e)
        {
            browser.Reload(WebBrowserRefreshOption.Completely);
        }

        //防止在新窗口打开链接
        private void browser_NewWindow(object sender, CancelEventArgs e)
        {
            e.Cancel = true;
        }

        private void MainMenu_System_Option_Click(object sender, EventArgs e)
        {
            setup s = new setup();
            s.ShowDialog();
        }

        private void MainMenu_Option_Clean_Click(object sender, EventArgs e)
        {
            
        }        
    }
}

然后发现在它的创建新窗口事件里面无法获取URL和拦截,网上查了一下,版本已经没有更新和维护了,果断弃坑。

这个网页显示的效果还算是不错,如果就是简单包装,可以试着用一下,相比微软的WebBrowser对环境依赖小很多。

猜你喜欢

转载自blog.csdn.net/qq_42213965/article/details/121901122