0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Cefsharp 的使用

汽車電子技術 ? 來源:程序猿知秋 ? 作者:程序猿知秋 ? 2023-02-28 09:47 ? 次閱讀

圖片

安裝

Cefsharp簡介

  • CEF , 全稱Chromium Embedded Framework ,基于谷歌 Chromium項目的開源Web Browser控件,它的主要用途是嵌入了第三方應用以實現(xiàn)瀏覽器相關的功能。例如國內(nèi)的360安全瀏覽器的兼容模式即IE的內(nèi)核,極速模式即Chromium內(nèi)核;最近微軟新推出的Microsoft Edge也是基于Chromium開源項目實現(xiàn)的
  • 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()
{
            //參數(shù)設置
            CefSettings settings = new CefSettings();
          //  settings.Locale = "zh-CN";
            // settings.CefCommandLineArgs.Add("disable-gpu", "1");//去掉gpu,否則chrome顯示有問題
            Cef.Initialize(settings);
            //創(chuàng)建實例
            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();  //禁用右鍵菜單
    點擊并拖拽以移動
    

如何添加頁面加載完成回調(diào)事件?

  • 設置ChromiumWebBrowser的 FrameLoadEnd 屬性
  • public void InitCef()
    {
      //參數(shù)設置
      CefSettings settings = new CefSettings();
      //  settings.Locale = "zh-CN";
      // settings.CefCommandLineArgs.Add("disable-gpu", "1");//去掉gpu,否則chrome顯示有問題
      Cef.Initialize(settings);
      //創(chuàng)建實例
      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如何回調(diào)到 winform窗體中?

  • 初始化chromeBrowser對象時,需要事先注冊好回調(diào)方法
  • public void InitCef()
    {
      //參數(shù)設置
      CefSettings settings = new CefSettings();
      Cef.Initialize(settings);
      //創(chuàng)建實例
      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;
    }
    

事先建立一個類,專門用來放需要回調(diào)的方法

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("更多**好看的內(nèi)容**和**好玩的案例**請關注**我的微信公眾號: 程序猿知秋");
    ProcessStartInfo start = new ProcessStartInfo("cmd.exe", "/c pause");
    Process.Start(start);
  }

}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 瀏覽器
    +關注

    關注

    1

    文章

    1007

    瀏覽量

    35189
  • CEF
    CEF
    +關注

    關注

    0

    文章

    37

    瀏覽量

    18456
  • 開源項目
    +關注

    關注

    0

    文章

    36

    瀏覽量

    7156
收藏 人收藏

    評論