最近要写一个浏览器包裹一个网站,试了各种浏览器插件,记录一下。
用了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对环境依赖小很多。