IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]第一次使用CEF做个Demo

    hawksoft发表于 2016-07-14 21:05:35
    love 0

    1)使用VS2013,新建一个winform程序,然后用NutGet安装cefsharp.winform包;

    2)添加后,直接运行会报错,因为Cefsharp没有针对AnyCpu的模式,所以将程序的生成目标平台改成x64(x86根据自己需要)

    (点击生成--〉选项目所在的平台(默认只有AnyCpu),没有X64或者X86,自己可以新建一个目标平台;

    3) 初始化代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private CefSharp.WinForms.ChromiumWebBrowser theBrowser;
            private void Form1_Load(object sender, EventArgs e)
            {
                theBrowser = new CefSharp.WinForms.ChromiumWebBrowser(@"D:\test\WindowsFormsApplication1\WindowsFormsApplication1\HTMLPage1.html");
                theBrowser.Dock = DockStyle.Fill;
                this.Controls.Add(theBrowser);
                //theBrowser.GetBrowser().MainFrame.
                //theBrowser.RegisterJsObject("JsObj", new JsEvent(this.theBrowser), false);
                theBrowser.RegisterAsyncJsObject("JsObj", new JsEvent(this.theBrowser), false);
               
            }
        }
    }
    

    4)其中的JsObj类:

    public class JsEvent
        {
            public string MessageText = string.Empty;
            private CefSharp.WinForms.ChromiumWebBrowser OwnerBrowser;
            public JsEvent(CefSharp.WinForms.ChromiumWebBrowser OwnerBrowser)
            {
                this.OwnerBrowser = OwnerBrowser;
            }
            public void ShowTest()
            {
                this.OwnerBrowser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("abc();");
                
            }
        }


    5) 加载的Html文件内容:

    <!DOCTYPE html>
    
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title></title>
    <script type="text/javascript">
        function abc()
        {
            alert("hello");
        }
        function DoA(a)
        {
            JsObj.MessageText = a;
            JsObj.ShowTest();
        }
    </script>
    </head>
    <body>
        <input type="text"  value="hello"/>
        <input type="text" value="dddd" />
        <input type="button" title="测试" value="click" onclick="DoA('ddd');" />
    </body>
    </html>


    以上就是一个基本的的C#使用CefSharp的例子:

    1)包含了基本设置;

    2)如何加载或者初始化Cef 浏览器

    3)C#与页面之间的互相调用方法。


    利用Cef的好处还是很多的,基本的如下:

    1)对于客户端程序,可以实现非常漂亮的可以移植和跨平台的UI;

    2)对于BS架构程序,可以定制自己专用的浏览器,摆脱浏览器差异所带来的烦恼;

    3)可以实现混合模式的客户端程序。

    
    


沪ICP备19023445号-2号
友情链接