CEF 框架使用集锦
CEF 框架使用集锦:
参考:
〓https://github.com/NetDimension/NanUI/wiki/%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8NanUI
〓https://github.com/NetDimension/NanUI/wiki/%E6%89%93%E5%8C%85%E5%B9%B6%E4%BD%BF%E7%94%A8%E5%86%85%E5%B5%8C%E5%BC%8F%E7%9A%84HTML-CSS-JS%E8%B5%84%E6%BA%90
〓https://github.com/NetDimension/NanUI/wiki/%E4%BD%BF%E7%94%A8%E7%BD%91%E9%A1%B5%E6%9D%A5%E8%AE%BE%E8%AE%A1%E6%95%B4%E4%B8%AA%E7%AA%97%E5%8F%A3
〓https://github.com/NetDimension/NanUI/wiki/%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0C%23%E4%B8%8EJavascript%E7%9A%84%E7%9B%B8%E4%BA%92%E9%80%9A%E4%BF%A1
前言:NetDimension.NanUI 集成的 CEF 框架开发工作,仅限于VS2017下进行开发
------------------------------------------------------------
001、引用 NetDimension.NanUI.dll
------------------------------------------------------------
002、通过 NuGet 包管理器添加则会自动加载相应的CEF框架,不然则需要自行下载CEF框架
------------------------------------------------------------
003、需要将 CEF 框架的资源放置于应用程序根目录当中:
(1) 自适应 x86[32位] 或 x64[64位] 运行环境,将“fx”目录放置于程序根目录
(2) 如果是特定的运行环境,则需要将“fx”目录下,
除“x64”和“x86”外的所有目录全部放置于程序根目录,
然后再将相应的运行环境目录,同样放置于程序根目录
------------------------------------------------------------
004、使用 Bootstrap.Load 对CEF框架进行初始化操作
如:禁用日志、默认语言、禁用跨域安全检测等
示例代码:
//指定CEF架构和文件目录结构,并初始化CEF
var loadFlag = Bootstrap.Load(settings => {
//禁用日志
settings.LogSeverity = Chromium.CfxLogSeverity.Disable;
//指定中文为当前CEF环境的默认语言
settings.AcceptLanguageList = "zh-CN";
settings.Locale = "zh-CN";
}, commandLine => {
//在启动参数中添加disable-web-security开关,禁用跨域安全检测
commandLine.AppendSwitch("disable-web-security");
});
if (loadFlag) {
Application.Run(new MainForm());
}
else {
MessageBox.Show("对不起!CEF框架未能正常加载,请检查配置环境,确认无误后再重试。", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
------------------------------------------------------------
005、如果是特定的运行环境使用,则需要使用如下的初始化方式,同时,
在VS的配置管理器中添加平台设置,将项目的目标平台指定为所需要的平台。
示例代码:
//指定对应系统架构,如果省略指定CEF目录结构的参数,那么需要手动调整CEF目录结构。
var loadFlag = Bootstrap.Load(PlatformArch.x86);
if(loadFlag)
{
Application.Run(new MainForm());
}
------------------------------------------------------------
006、将 WinForm 的窗体继承变更为 NanUI 的窗体类型
(1) Formium NanUI使用无边框窗体引擎
(2) WinFormium NanUI使用原生的窗体样式
(3) 继承的窗体构造函数中,传入需要显示的网页地址,即可开启 NanUI 的 CEF 框架之旅
示例代码:
//原生的窗体样式
public partial class MainForm : WinFormium {
public MainForm()
: base("http://cn.bing.com") {
InitializeComponent();
}
}
//无边框窗体引擎
public partial class MainForm : Formium {
public MainForm()
: base("http://cn.bing.com") {
InitializeComponent();
}
}
------------------------------------------------------------
007、在项目中添加一个应用程序清单文件: app.manifest,
并且取消**启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) **段中的注释:
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
然后在项目属性的应用程序选项卡中找到清单项目,并指定其中内容为刚才的app.manifest,
重新运行项目,这时网页中的所有带title属性的标签就能正常显示工具提示了
------------------------------------------------------------
008、将WEB前端的HTML/CSS/JS等文件作为嵌入资源编译到项目中,既可提高加载速度,同时能避免恶意修改
------------------------------------------------------------
009、在使用 Bootstrap.Load 对CEF框架进行初始化操作时,需要同时注册好项目所使用的内嵌资源信息
示例代码:
if (loadFlag) {
//注册嵌入资源,并为指定资源指定一个假的域名 my.resource.local
Bootstrap.RegisterAssemblyResources(System.Reflection.Assembly.GetExecutingAssembly(), domainName: "my.resource.local");
//加载分离式的资源
var separateAssembly = System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(Application.StartupPath, "EmbeddedResourcesInSplitAssembly.dll"));
//注册外部的嵌入资源,并为指定资源指定一个假的域名 separate.resource.local
Bootstrap.RegisterAssemblyResources(separateAssembly , domainName: "separate.resource.local");
Application.Run(new MainForm());
}
可以在项目中注册多个程序中的嵌入式资源,但必需指定不同的域名(domainName参数),在使用时通过域名指向方式。
------------------------------------------------------------
010、完成资源文件的嵌入后,我们就可以跟平常浏览网页一样,
按照指定的虚假域名加上资源嵌入的目录层级路径,就可以在 NanUI 中顺利使用我们的嵌入资源
(1) 通过 http://my.resource.local/index.html 访问主项目中的 index.html 文件
(2) 通过 http://separate.resource.local/index.html 访问外部程序集 EmbeddedResourcesInSplitAssembly.dll 中的 index.html 文件
项目中使用示例代码:
public partial class MainForm : Formium
{
public MainForm()
: base("http://my.resource.local/index.html")
{
InitializeComponent();
}
}
------------------------------------------------------------
CEF 框架使用集锦的更多相关文章
- CEF中文教程(google chrome浏览器控件) -- Windows下编译Chromium
CEF中文教程(google chrome浏览器控件) -- CEF简介 2013-04-10 16:48 42928人阅读 评论(4) 收藏 举报 分类: CEF(2) 目录(?)[+] ...
- 使用Cmake编译CEF时遇到Error in configuration process,project file may be invalid的解决办法
今天在用Cmake编译cef框架时,弹出了错误,如图: 可以排查一下几种原因: 1.在64位计算机编译32位程序 可以更换编译环境,或者下载64位版本来解决这个问题. 2.选择的Visual Stud ...
- [Asp.Net Core] Blazor Server Side 扩展用途 - 配合CEF来制作客户端浏览器软件
前言 大家用过微信PC端吧? 这是用浏览器做的. 用过Visual Studio Code吧? 也是用浏览器做的. 听说, 暴雪客户端也包含浏览器核心?? 在客户端启动一个浏览器, 并不是什么难事了. ...
- .Net/.Net Core 的界面框架 NanUI 发布新版本啦!
发布前感悟 NanUI 自从上一次更新 NanUI 0.7 已经过去大半年,B站和头条的教学视频也只制作到了第二集. 有朋友悄悄问我是不是发生什么事故我删库跑路了所以那么长时间不更新项目不发布教程,当 ...
- 使用CEF(三)— 从CEF官方Demo源码入手解析CEF架构与CefApp、CefClient对象
在上文<使用CEF(2)- 基于VS2019编写一个简单CEF样例>中,我们介绍了如何编写一个CEF的样例,在文章中提供了一些代码清单,在这些代码清单中提到了一些CEF的定义的类,例如Ce ...
- 使用CEF(二)— 基于VS2019编写一个简单CEF样例
使用CEF(二)- 基于VS2019编写一个简单CEF样例 在这一节中,本人将会在Windows下使用VS2019创建一个空白的C++Windows Desktop Application项目,逐步进 ...
- Index
我主要在研究.NET/C# 实现 PC IMERP 和 Android IMERP ,目的在解决企业通信中遇到的各类自动化问题 分布式缓存框架: Microsoft Velocity:微软自家分布 ...
- NanUI for Winform发布,让Winform界面设计拥有无限可能
如今,尽管WPF.UWP大行其道,大有把Winform打残干废的趋势.但是还是有那么一波顽固不化的老家伙们固守着Winform,其中就包括我. 好吧,既然都说Winform做得软件不如WPF界面美观效 ...
- GitHub上整理的一些工具
技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 ...
随机推荐
- C++面向对象高级编程(下)-Geekband
11, 组合和继承 一, Composition 复合 has-a的关系 简单来讲, 就是: class A{ classB b1; }; 这里讲到Adapter设计模式: templa ...
- HZOI20190902模拟35题解
题面: A:公园 DAG上想拓扑dp 然而博主记忆化搜索了一下 设f[i][j]表示从i节点走j个点出公园所用的最小时间 则$f[u][i]=min(f[v][j-1]+dis_{u,v})$; 然后 ...
- HZOI20190818模拟25题解
题面:https://www.cnblogs.com/Juve/articles/11372379.html A:字符串 其实是CATALAN数水题... 和网格一毛一样:https://www.cn ...
- c++继承知识点小结
继承的概念 继承是c++中一个重要的概念.继承是指,我们可以使用一个类来定义另一个类,在创建这个类时,我们就不需要重新编写数据成员与成员函数,这可以大大方便我们编写代码和维护代码的效率. 当我们使用一 ...
- 软件-浏览器-GoogleChrome:Google Chrome
ylbtech-软件-浏览器-GoogleChrome:Google Chrome Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit, ...
- Python字符串切片操作知识详解
Python字符串切片操作知识详解 这篇文章主要介绍了Python中字符串切片操作 的相关资料,需要的朋友可以参考下 一:取字符串中第几个字符 print "Hello"[0] 表 ...
- qml获取实际渲染的字体
当设置qml的Text元素的字体时,如果系统中不存在设置的字体,qml会根据匹配算法自动选取系统中存在的一种字体.比如:设置font.family: "微软雅黑",但系统中根本没有 ...
- 【html、CSS、javascript-4】新特征之增强表单
一.input元素及属性 input元素的属性 type属性:指定输入内容的类型,默认为text:单行文本框 name属性:输入内容的识别名称,传递参数时候的参数名称 value属性:默认值 maxl ...
- bzoj 1179 [Apio2009]Atm——SCC缩点+spfa
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1179 显然SCC缩点. 然后准备倒着拓扑序推到st,结果WA. 听TJ说dj求最长路会发生不 ...
- poj 2349 Arctic Network 最小生成树,求第k大条边
题目抽象出来就是有一些告诉坐标的通信站,还有一些卫星,这些站点需要互相通信,其中拥有卫星的任意两个站可以不用发射器沟通,而所有站点的发射器要都相同,但发射距离越大成本越高. 输入的数据意思: 实例个数 ...