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/

作者:无脑仔的小明
出处:http://www.cnblogs.com/wunaozai/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。有需要沟通的,可以站内私信,文章留言,或者关注“无脑仔的小明”公众号私信我。一定尽力回答。

推荐这些文章:

谷歌无头浏览器

from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

driver = webdriver.Chrome(r'../common/chromedriver.exe',options=chrome_opti...

selenium of python (3.3.1)实现关闭浏览器页签功能

1.打开新页签后关掉当前页签
driver=webdriver.Chrome()
driver.close();
2.打开新页签后关掉新页签
win=chrome.window_handles #窗口数声明变量time.sleep(3) #等待时间,如需用需 import timefor w in win: #w 为遍历到的窗口 if w == chrome.current_window_handle: # 如果遍历到当前窗口继续 continue # chrome.switch_to_window(w...

前端-跨域设置浏览器

一.桌面新建一个记事本

cd C:\Users\Administrator\AppData\Local\google\Chrome\Application\
chrome.exe --disable-web-security --user-data-dir=C:\MyChromeDevUserData

二.输入上面的代码

三.更改后缀名
chrome.bat
四.双击启动就可以了
 

...

Chrome浏览器崩溃的解决办法

2022年1月19日15:16:08
文章摘自简书

网上虽然有很多回答,但历史悠久,有可能之前这些方法确实有用,但现在对我统统不管用!为防止后人踩坑,不要耽误太多时间,我简单说下哪些方法不可行。
不过这种是对我的情况(win10 64bit),当然你也可以尝试,或许对你适用。

我试过成功的:
解决方法:禁用谷歌chrome的这项功能
Win+R打开运行对话框,输入regedit打开注册表编辑器
导航到
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome
在右边窗口中,右键单击新建>DWORD(32位)值以创建新密钥
双击它,然后将值名称改为R...

WPF嵌入一个chrome浏览器,没有显示是怎么回事?

问题
WPF代码

<Window x:Class="WpfApp2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas...

下载chromedriver与chrome浏览器对应版本

下载地址:  http://chromedriver.storage.googleapis.com/index.html
1、找到chrome版本 如下图:

 
 2、打开下载地址找到对应版本:
下载地址:  http://chromedriver.storage.googleapis.com/index.html
我chrome版本是:99.0.4844.51   如果没有完全一致的版本,下载最相近的也是可以的;

 
 
3、根据个人电脑配置,下载相应版本即可

 
 ...

visual studio网站项目无法启动chrome,设置chrome为默认也不起作用

问题
visual studio网站项目无法启动chrome,设置chrome为默认也不起作用,每次都会启动IE,其他浏览器如火狐等没有此问题,重新安装chrome也不起作用,希望有朋友能帮忙解决此问题
 
 
没有找到解决办法,现在使用的基于Chrome的枫树浏览器,感谢大家的帮助,园豆就平均分了

最佳回答
先把VS中的所有配置全部还原下,然后设置下VS的默认启动浏览器试试

...

js高级_浏览器内核

浏览器内核
支撑浏览器运行的最核心的程序。(浏览器也是程序,也是用代码写的,内核就是一些比较底层的代码。)
不同的浏览器的内核可能不一样。比如:chrome用的内核叫:webkit,IE用的叫Trident。
内核有很多模块组成

...

FreeCAD加载ui文件显示于组合浏览器

把下面代码更改ui文件后粘贴到Python控制台
视图---面板---Python控制台

import FreeCAD
import FreeCADGui
from PySide import QtCore, QtGui

class CalculateSum:
def __init__(self):
# Importing the form from Qt UI file.
self.form = FreeCADGui.PySideUic.loadUi("F:/Program Files/FreeCAD 0.18/Mod/Desk_ui_FC/M...

拥有webkit内核浏览器的平台

1-拥有webkit内核的浏览器:

ios safari
Android
Google chrome
猎豹浏览器
百度浏览器
Opera

2-拥有其他内核的浏览器:

Internet Explorer(简称:IE)---- Trident 为内核
Firefox 火狐-----------------------是基于 Gecko 开发

 

...

文章标题:C#使用chrome浏览器(CefSharp)
文章链接:https://www.dianjilingqu.com/51055.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>