安裝
Cefsharp簡介
- CEF ,全稱Chromium Embedded Framework ,基于谷歌 Chromium項目的開源Web Browser控件,它的主要用途是嵌入了第三方應用以實作浏覽器相關的功能。例如國内的360安全浏覽器的相容模式即IE的核心,極速模式即Chromium核心;最近微軟新推出的Microsoft Edge也是基于Chromium開源項目實作的
- CefSharp是Cef的C#版本,讓Chromium浏覽器也可嵌入WinForms 中
安裝步驟
- 第一步:右鍵項目,點選 管理NuGet程式包 , 輸入Cefsharp 關鍵字搜尋, 選擇 CefSharp.WinForms 進行安裝
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLkdzMyMWZ5cTNwMDOzYGZ5EzNwQzNhVTZ5AjMkVmMwczLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
安裝完後,以packages.config中可以看到如下資訊
- 第二步:修改配置管理器,将平台修改為X86或X64,Cef有32和64位之分
在
活動方案解決平台
下拉,點選建立
選擇
X86
,點選确定,接着關閉即可
- 第三步:編寫代碼,初始化浏覽器
using CefSharp;
using CefSharp.WinForms;
using System.Windows.Forms;
namespace 我的浏覽器
{
public partial class Form1 : Form
{
// 浏覽器對象
public ChromiumWebBrowser chromeBrowser;
public Form1()
{
InitializeComponent();
}
public void InitCef()
{
//參數設定
CefSettings settings = new CefSettings();
// settings.Locale = "zh-CN";
// settings.CefCommandLineArgs.Add("disable-gpu", "1");//去掉gpu,否則chrome顯示有問題
Cef.Initialize(settings);
//建立執行個體
chromeBrowser = new ChromiumWebBrowser("https://www.baidu.com");
// 将浏覽器放入容器中
this.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill;
}
private void Form1_Load(object sender, System.EventArgs e)
{
// 初始化浏覽器
InitCef();
}
}
}
最終啟動程式,成功通路百度
常見疑問
右鍵菜單如何禁用?
- 設定ChromiumWebBrowser的 MenuHandler屬性即可
-
chromeBrowser.MenuHandler = new MenuHandler(); //禁用右鍵菜單
如何添加頁面加載完成回調事件?
- 設定ChromiumWebBrowser的 FrameLoadEnd 屬性
-
public void InitCef() { //參數設定 CefSettings settings = new CefSettings(); // settings.Locale = "zh-CN"; // settings.CefCommandLineArgs.Add("disable-gpu", "1");//去掉gpu,否則chrome顯示有問題 Cef.Initialize(settings); //建立執行個體 chromeBrowser = new ChromiumWebBrowser("https://www.baidu.com"); // 将浏覽器放入容器中 this.Controls.Add(chromeBrowser); chromeBrowser.Dock = DockStyle.Fill; //頁面加載完成事件 chromeBrowser.FrameLoadEnd += webview_FrameLoadEnd; } private void webview_FrameLoadEnd(object sender, FrameLoadEndEventArgs e) { // 代碼 }
浏覽器中的 js如何回調到 winform窗體中?
- 初始化chromeBrowser對象時,需要事先注冊好回調方法
-
事先建立一個類,專門用來放需要回調的方法public void InitCef() { //參數設定 CefSettings settings = new CefSettings(); Cef.Initialize(settings); //建立執行個體 chromeBrowser = new ChromiumWebBrowser("https://www.baidu.com"); // 注冊浏覽器方法 chromeBrowser.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true; CefSharpSettings.WcfEnabled = true; chromeBrowser.JavascriptObjectRepository.Register("cefCustomObject", new CefCustomObject(chromeBrowser, this), isAsync: false, options: BindingOptions.DefaultBinder); // 将浏覽器放入容器中 this.Controls.Add(chromeBrowser); chromeBrowser.Dock = DockStyle.Fill; }
-
internal class CefCustomObject { // 浏覽器對象 private static ChromiumWebBrowser _instanceBrowser = null; // 主窗體 private static Form1 _instanceMainForm = null; public CefCustomObject() { } public CefCustomObject(ChromiumWebBrowser originalBrowser, FrmMain mainForm) { _instanceBrowser = originalBrowser; _instanceMainForm = mainForm; } public void opencmd() { MessageBox.Show("WX GZH: 程式猿知秋"); ProcessStartInfo start = new ProcessStartInfo("cmd.exe", "/c pause"); Process.Start(start); } }