安裝
Cefsharp簡(jiǎn)介
- CEF , 全稱(chēng)Chromium Embedded Framework ,基于谷歌 Chromium項(xiàng)目的開(kāi)源Web Browser控件,它的主要用途是嵌入了第三方應(yīng)用以實(shí)現(xiàn)瀏覽器相關(guān)的功能。例如國(guó)內(nèi)的360安全瀏覽器的兼容模式即IE的內(nèi)核,極速模式即Chromium內(nèi)核;最近微軟新推出的Microsoft Edge也是基于Chromium開(kāi)源項(xiàng)目實(shí)現(xiàn)的
- CefSharp是Cef的C#版本,讓Chromium瀏覽器也可嵌入WinForms 中
安裝步驟
- 第一步: 右鍵項(xiàng)目,點(diǎn)擊 管理NuGet程序包 , 輸入Cefsharp 關(guān)鍵字搜索, 選擇 **CefSharp.WinForms **進(jìn)行安裝
編輯
安裝完后,以packages.config中可以看到如下信息
編輯
- ** 第二步: 修改配置管理器,將平臺(tái)修改為X86或X64,Cef有32和64位之分**
編輯
在 活動(dòng)方案解決平臺(tái)
下拉,點(diǎn)擊新建
編輯
**** **選擇 X86
** ,點(diǎn)擊確定,接著關(guān)閉即可
編輯
- **** 第三步: 編寫(xiě)代碼,初始化瀏覽器****
using CefSharp;
using CefSharp.WinForms;
using System.Windows.Forms;
namespace 我的瀏覽器
{
public partial class Form1 : Form
{
// 瀏覽器對(duì)象
public ChromiumWebBrowser chromeBrowser;
public Form1()
{
InitializeComponent();
}
public void InitCef()
{
//參數(shù)設(shè)置
CefSettings settings = new CefSettings();
// settings.Locale = "zh-CN";
// settings.CefCommandLineArgs.Add("disable-gpu", "1");//去掉gpu,否則chrome顯示有問(wèn)題
Cef.Initialize(settings);
//創(chuàng)建實(shí)例
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();
}
}
}
最終啟動(dòng)程序,成功訪(fǎng)問(wèn)百度
編輯
常見(jiàn)疑問(wèn)
右鍵菜單如何禁用?
- 設(shè)置ChromiumWebBrowser的 MenuHandler屬性即可
-
chromeBrowser.MenuHandler = new MenuHandler(); //禁用右鍵菜單 點(diǎn)擊并拖拽以移動(dòng)
如何添加頁(yè)面加載完成回調(diào)事件?
- 設(shè)置ChromiumWebBrowser的 FrameLoadEnd 屬性
-
public void InitCef() { //參數(shù)設(shè)置 CefSettings settings = new CefSettings(); // settings.Locale = "zh-CN"; // settings.CefCommandLineArgs.Add("disable-gpu", "1");//去掉gpu,否則chrome顯示有問(wèn)題 Cef.Initialize(settings); //創(chuàng)建實(shí)例 chromeBrowser = new ChromiumWebBrowser("https://www.baidu.com"); // 將瀏覽器放入容器中 this.Controls.Add(chromeBrowser); chromeBrowser.Dock = DockStyle.Fill; //頁(yè)面加載完成事件 chromeBrowser.FrameLoadEnd += webview_FrameLoadEnd; } private void webview_FrameLoadEnd(object sender, FrameLoadEndEventArgs e) { // 代碼 }
瀏覽器中的 js如何回調(diào)到 winform窗體中?
- 初始化chromeBrowser對(duì)象時(shí),需要事先注冊(cè)好回調(diào)方法
-
public void InitCef() { //參數(shù)設(shè)置 CefSettings settings = new CefSettings(); Cef.Initialize(settings); //創(chuàng)建實(shí)例 chromeBrowser = new ChromiumWebBrowser("https://www.baidu.com"); // 注冊(cè)瀏覽器方法 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; }
事先建立一個(gè)類(lèi),專(zhuān)門(mén)用來(lái)放需要回調(diào)的方法
internal class CefCustomObject
{
// 瀏覽器對(duì)象
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("更多**好看的內(nèi)容**和**好玩的案例**請(qǐng)關(guān)注**我的微信公眾號(hào): 程序猿知秋");
ProcessStartInfo start = new ProcessStartInfo("cmd.exe", "/c pause");
Process.Start(start);
}
}
-
瀏覽器
+關(guān)注
關(guān)注
1文章
1040瀏覽量
36172 -
CEF
+關(guān)注
關(guān)注
0文章
37瀏覽量
18638 -
開(kāi)源項(xiàng)目
+關(guān)注
關(guān)注
0文章
38瀏覽量
7439
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論