编程语言
首页 > 编程语言> > C#使用chrome浏览器(CefSharp)

C#使用chrome浏览器(CefSharp)

作者:互联网

0. 前言

  由于项目需要,众所周知,PC端软件的界面UI令人堪忧。之前使用过Qt,C#都不尽人意。而且对应的界面库也不多,很多还是收费的。
  有没有一种可能,就是基于Web的开源生态,开发一些桌面工作呢,目前有Electron,这个用的人比较多。这个有个缺点就是,如果涉及到与硬件或操作系统之类进行交互的时候,就没有C#或者QT那样方便。特别是调用动态库之类的。
  C#通过CefSharp,引入一个Chrome内核,使其能使用Web来画界面,然后用C#来实现对应的功能。

 

1. 新建C#(.Net)项目
  目标框架选择.net framework 4.6
  

 

2. 通过Nuget应用CefSharp
  目标平台要进行选择,不能是any cpu
  

  安装以下必要的依赖包
  

  拖动一个Web控件到界面上
  


3. 编写代码,加载Html文件

  

 1 using CefSharp;
 2 using CefSharp.WinForms;
 3 using System;
 4 using System.Collections.Generic;
 5 using System.ComponentModel;
 6 using System.Data;
 7 using System.Drawing;
 8 using System.Linq;
 9 using System.Text;
10 using System.Windows.Forms;
11 
12 namespace CefTools
13 {
14     public partial class Form : System.Windows.Forms.Form
15     {
16         public Form()
17         {
18             InitializeComponent();
19 
20             //访问连接不安全网页时不显示的问题
21             var setting = new CefSettings();
22             setting.CefCommandLineArgs.Add("--ignore-urlfetcher-cert-requests", "1");
23             setting.CefCommandLineArgs.Add("--ignore-certificate-errors", "1");
24             //setting.LogSeverity = LogSeverity.Disable;
25             Cef.Initialize(setting);
26 
27             BrowserSettings bsetting = new BrowserSettings();
28             web.BrowserSettings = bsetting;
29 
30             this.web.AllowDrop = false;
31             this.web.Dock = DockStyle.Fill;
32 
33             this.web.LoadUrl("file:///./test/test.html");
34 
35             //JS调用C#
36             web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true; //启用运行JS调用C#代码
37             CefSharpSettings.WcfEnabled = true;
38             web.JavascriptObjectRepository.Register("bound", new Bound(), isAsync: false, options: BindingOptions.DefaultBinder);
39         }
40 
41         private void btn_Click(object sender, EventArgs e)
42         {
43             //C#调用JS
44             web.ExecuteScriptAsync("alert('C#调用JS')");
45             web.ShowDevTools();
46         }
47     }
48     class Bound
49     {
50         public string val { get; set; }
51         public void print()
52         {
53             Console.WriteLine("Bound Val: " + val);
54             val = "update";
55         }
56     }
57 }

 

4. C#调用JS
  

 

5. JS调用C#
  

 

 

本文地址:https://www.cnblogs.com/wunaozai/p/15872741.html
个人主页:https://www.wunaozai.com/

标签:web,CefSharp,C#,System,JS,chrome,setting,using
来源: https://www.cnblogs.com/wunaozai/p/15872741.html