安裝
Cefsharp簡介
- CEF , 全稱Chromium Embedded Framework ,基于谷歌 Chromium項目的開源Web Browser控件,它的主要用途是嵌入了第三方應用以實現瀏覽器相關的功能。例如國內的360安全瀏覽器的兼容模式即IE的內核,極速模式即Chromium內核;最近微軟新推出的Microsoft Edge也是基于Chromium開源項目實現的
- CefSharp是Cef的C#版本,讓Chromium瀏覽器也可嵌入WinForms 中
安裝步驟
- 第一步: 右鍵項目,點擊 管理NuGet程序包 , 輸入Cefsharp 關鍵字搜索, 選擇 **CefSharp.WinForms **進行安裝
編輯
安裝完后,以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("更多**好看的內容**和**好玩的案例**請關注**我的微信公眾號: 程序猿知秋");
ProcessStartInfo start = new ProcessStartInfo("cmd.exe", "/c pause");
Process.Start(start);
}
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
瀏覽器
+關注
關注
1文章
1035瀏覽量
35464 -
CEF
+關注
關注
0文章
37瀏覽量
18491 -
開源項目
+關注
關注
0文章
38瀏覽量
7230
發布評論請先 登錄
評論