cef 介绍

CEF(Chromium Embedded Framework)下载以及编译目的为了后续与DuiLib相结合 是一个开源软件框架,用于在另一个应用程序中嵌入浏览器。这使开发人员能够向其应用程序中添加web浏览功能,并能够使用HTML、CSS和JavaScript创建应用程序的用户界面(或只是其中的一部分)。CEF在LinuxmacOS和Windows上运行。它有许多语言绑定,包括C、C++、Go、Java和Python。ChromiumCEF 1和CEF 3。出现后,CEF 2的开发被放弃。CEF 1是基于的单进程实现。它不再得到积极开发或支持。CEF 3是基于的多进程实现,其性能类似于Google Chrome。 阅读详情



CEF: Chromium Embeded Framewrok;   08 年成立的开源项目;


 


PC(Liinux,Windows,MacOS)上把 chromium 浏览器嵌入桌面应用程序的框架;     其实移动端,ios/android上面 也可以做类似的事情,比如原生ios嵌入crosswalk/opwenwebrtc等,从而用Html5实现用户 界面, 实现多屏互动。




介绍

cef 是一个基于google chromiun的简单的框架。 它主要是作为一个内嵌浏览器嵌入到客户端应用程序中。

可以再 http://cefbuilds.com 下载最新的编译版本。

总体框架预览

  1. CEF 使用了多进程。主进程是“browser”进程。 而子进程是由rederes, plugins, GPU, 等组件创建。
  2. 在ECF的所有进程中,都可以有多线程。CEF提供了函数和接口在不同的线程中来传递任务。
  3. 一些回调方法和函数只能在特定线程和进程中使用。在使用API之前请确保仔细阅读注释。

源代码

cefsimple 工程初始化CEF并创建了一个简单的浏览器窗口。

  1. 系统在入口点函数中(man或者wWinMain)函数中开启browser进程
  2. 入口点函数:

    1. 创建SimpleApp的实例,在这个类中保存process-level callbacks.
    2. 初始化CEF并开启消息循环。
  3. 当CEF初始化完毕以后, SimpleApp::OnContextInitialized()会被调用。在这个方法中:

    1. 创建一个单例的SimpleHandler
    2. 由CefBrowserHost::CreateBrowserSync()创建一个浏览器窗口
  4. 所有的浏览器共享同一个在SimpleHandler。SimpleHandler负责定制浏览器的行为并保存browser-related callbacks(loading状态,标题行为等)
  5. 当浏览器窗口被关闭的时候, SimpleHandler::OnBeforeClose() 被调用。当所有浏览器窗口被关闭,CEF消息循环退出。

可以看下如下代码:

int APIENTRY wWinMain(HINSTANCE hInstance
				  , HINSTANCE hPrevInstance
				  , LPTSTR lpCmdLine
				  , int nCmdShow)
{
	CefMainArgs args(hInstance);

	CefRefPtr<MySimpleApp> app(new MySimpleApp);

	int exitCode = CefExecuteProcess(args, app, NULL);
	if(exitCode >= 0) return exitCode;
	CefSettings settings;
	CefInitialize(args, settings, app, NULL);

	CefRunMessageLoop();
	CefShutdown();
	return 0;
}

此时进程开启,但是没有任何窗口, 如果我们需要建立窗口需要如下

CefWindowInfo winInfo;
winInfo.SetAsPopup(NULL, "myCefSimple");

CefBrowserSettings browser_settings;

CefRefPtr<CefClient> client(new MySimpleClient());
std::string url = "file:///D:/project/github/cptf/resource/binding.html";

CefBrowserHost::CreateBrowser(winInfo
	, client.get()
	, url
	, browser_settings
	, NULL);

这样就显示出来窗口了。
但是我们发现在关闭的时候进程没有关掉, 所以我们要做如下动作。

class MySimpleClient : public CefClient
				, public CefLifeSpanHandler


void MySimpleClient::OnBeforeClose(CefRefPtr<CefBrowser> browser) {
	CEF_REQUIRE_UI_THREAD();

	CefQuitMessageLoop();
}

总结

App和Client是CEF中最重要的两个类。CefExecuteProcess 和 CefInitialize 是建立app的两个最重要方法。
而CreateBrowser 是创建浏览器窗口的最重要方法。



CefSharp 集成谷歌浏览器详解(四)--官网示例解析3 RegisterJsObject CefSharpSchemeHandlerFactory 本章主要讲解自定义javascript函数进行本地调用和自定义本地域名。1、自定义javascript函数1)得到browser对象然后注册自己的js对象。如下://注册usbjs对象 browser.RegisterJsObject("usbKey", new UsbKeyBound()); 注册本地html文件 阅读详情

相关推荐

CEF 96.0.18 Chromium集成Release包介绍

Chromium Embedded Framework (CEF) 是一种开源的框架,它允许开发者将Chromium浏览器的功能嵌入到应用程序中。这一章将为读者介绍CEF的基本概念和功能,为之后的章节打下基础。CEF是一个开源项目,它提供了与Google Chrome浏览器相同的渲染引擎,即Chromium。CEF广泛用于创建桌面应用程序,这些程序需要集成Web浏览器的特性和渲染能力,比如处理HTML、CSS和JavaScript内容。

weixin_34162851的博客 1116

【免费下载】 推荐开源项目:CefFlashBrowser - 一个基于CEF和Flash的桌面Web浏览器

是一个由Mzying2001开发的开源项目,它是一款基于Chromium Embedded Framework (CEF) 和 Adobe Flash 的桌面Web浏览器。该项目旨在提供一个支持Flash内容的现代浏览器,以便用户能够继续访问那些依赖Flash技术的网站。 ## 技术分析 **CEF(Chromium Embedded Framework)** CEF是一个跨平台的库,允许开发...

gitblog_00007的博客 5555

CefFlashBrowser - Flash浏览器

默认支持Flash的简易浏览器 GitHub: https://github.com/Mzying2001/CefFlashBrowser

ip cef 命令介绍及CEF技术浅析

移步至个人小站:www.very321.com http://hi.baidu.com/eyi326/blog/item/efbda6bfdf2fd90918d81ff3.html 为了在路由处理器卡上启用CEF,利用ip cef命令,在全局配置模式下进行。为了禁用CEF,使用该命令的“no”格式。 ip cef no ip cef 句法 描述

wjh168的专栏 5459

【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘

虚拟化平台安装好之后,一般情况下,只有一个硬盘在工作,其他的外接硬盘(我的只有一个ssd硬盘,其他的均是usb外接,SATA接口的硬盘是否这样我暂时不清楚哈)没有在工作,但是一个硬盘明显不够我们使用的,所以我们需要去挂载外接的硬盘来扩容。...

Rubik Blog 4834

在昇腾910B上,用kubeadm快速拉起一个双节点K8s集群(保姆级避坑指南)

本文详细介绍了在昇腾910B服务器上使用kubeadm快速搭建双节点Kubernetes集群的完整流程,包括环境准备、容器运行时配置、kubeadm初始化、节点加入与网络插件部署等关键步骤,特别针对ARM架构和昇腾芯片提供了优化配置和避坑指南。

weixin_29204749的博客 246

CEF的那点事 -- CEF介绍

CEF是Chromium Embedded Framework的简称,是Google公司开发的一个浏览器内核框架,以开源库的方式提供,可以内嵌到第三方程序中。 CEF老版本使用的WebKit内核,从2013年开始,CEF已经使用Google自主研发的Blink内核(网上也有人说,Blink是基于Webkit修改而来,这个无从考证)。 官网 CEF的官网是:https://bitbucket.org/chromiumembedded/cef/wiki/Home,国内用户访问可能不会太顺利。 版本 CEF经历了

while(1) { smile(); } 5870

利用Arcgis提取nc数据并计算区域年均温

1.下载数据。2.解压数据至不含中文的路径中。打开工具箱中的多维分析工具-创建NetCDF栅格图层,导入数据。3.打开工具箱中的数据管理工具-图层和表视图-创建栅格图层,导入数据,对输出数据进行命名,得到月均温栅格数据。4.选择工具箱-Spatial Analyst工具(空间分析工具)-地图代数-栅格计算器,计算全国一年年均温。​5.将其导出为.tif格式数据,方便后期使用。6.选择工具箱-Spatial Analyst工具(空间分析工具)-区域分析--以表格显示分区统计,得到分区域的气温数据。

什么都学亿点点的博客 7992

CEF 介绍与分析

http://www.aqcoder.com/post/content?id=7

Ravenq的专栏 732

单机多环境部署apollo 2.3.0

理解apollo的整体架构后,对比nacos配置中心功能点,其设计的复杂度以及完整度相较nacos而言更为丰富 对于不同的环境,例如 FAT, PRO 在部署时进程已经完全物理隔离,并且每个环境config/adminservice依赖的数据也完全物理隔离(连接不同的db),在数据隔离与安全方面做的很完善,但同时也提升了架构的复杂度 而 portal 可以管理多个环境,单节点部署虽然有单点问题,但并不会影响业务从configservice读取配置, 挂掉只要重启就可以,只是在

Life is a starting point everywhere 1299

ArcGIS+PLUS+InVEST三件套:从零搞定生态系统服务模拟预测(附完整数据包)

本文详细介绍了如何整合ArcGIS、PLUS模型和InVEST模型,构建一套完整的生态系统服务模拟预测工作流。内容涵盖从统一数据预处理、PLUS模型多情景模拟,到InVEST模型量化评估的全过程,并提供了关键脚本和避坑指南,旨在帮助研究者和从业者高效解决土地利用变化与生态系统服务评估结合的实际难题。

weixin_42522857的博客 139

Cef之接口介绍01

CEF3基本的框架包含C/C++程 序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和 Chromium&amp;Webkit的操作细节。它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户插件,协议,JavaScript对象以及 javascript扩展,宿主程序可以随意地控件资源下载,导航,下下文内容和打印等。下边总结一些最常用到的类和接口,便于了解整个cef3的代码。 CefBr...

hu00848的专栏 1701

通信原理 | 通俗理解 | 因子图、消息传递以及它们之间的关系

在算法迭代过程中,通过反复更新这些消息,直到收敛,最终可以得到每个变量的边缘概率分布或最有可能的整体状态。算法通过因子图中的节点反复交换消息,直到找到最优解或所有消息稳定下来,从而解决了比如聚会日期这样的优化问题。在实际应用中,这种方法可以用来解决更复杂的问题,比如图像识别、语音识别和机器学习中的其他问题。,特别是在处理概率模型和执行概率推断时,因子图提供了一个强大的工具。(比如朋友的空闲时间和地点的可用性),并且你希望尽可能让所有人满意。在真正的因子图和消息传递算法中,这个过程被数学化和形式化。

若北辰 1196

cef GeneralUsage 介绍

介绍(Introduction) 转载自:https://blog.youkuaiyun.com/Vincent95/article/details/77970004?locationNum=7&amp;fps=1 Chromium 嵌入式框架(CEF)是一个基于Google Chromium的开源项目。不同的是,Chromium项目主要专注于Chrome浏览器的开发,而CEF则专注于促进在第三方应用程序...

王鹤霖的专栏 三人行必有我师 1271

【SWAT】SWAT中预定义河网及流域

平原圩区没有明显的海拔差异。DEM中包含的地形信息无法定义河段的位置和水文连接,SWAT模型Watershed Delineator中提供两种方法,帮助用户输入流域拓扑信息。第一种方法,“Burn-in”和手动绘制河段和子流域边界。首先,使用“Burn-in”功能导入数字河道网络(DCN),并根据DEM和DCN绘制河流和子流域。然后在ArcGIS中编辑“流域”和“河段”层,可以调整位置、范围和水文连接。第二种方法,可以手动绘制或重新编辑河流和子流域,预定义河网及流域。

```On Earth, Be Water, By Coding``` 3273

【Bug已解决】Auto mode cannot determine the safety of an action — Claude Code 自动模式安全判断失败解决方案

将已知安全的操作添加到白名单,分类器不再拦截这些操作。# 步骤 1:编辑 Claude Code 配置"Read","Write"EOF# 步骤 2:白名单中的操作将自动通过# 不在白名单中的操作仍需分类器判断# 步骤 3:重启 Claude Codeclaude方案适用场景推荐指数难度方案一:手动审批偶发回退,安全优先⭐⭐⭐⭐⭐低方案二:/compact 压缩上下文超限导致⭐⭐⭐⭐低方案三:拆分步骤复杂操作触发⭐⭐⭐⭐低方案四:跳过审批隔离环境,CI/CD。

博客 1万+

CEF-概述和常用功能介绍(GeneralUsage翻译)

1.介绍 https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage.md 翻译来自:cefutil CEF全称Chromium Embedded Framework,是一个基于Google Chromium 的开源项目。Google Chromium项目主要是为Google Chrome应用开发的,而CEF的目标则是为第三方应用提供可嵌入浏览器支持。CEF隔离底层Chromium和Blink的复杂代码,并提供一套产品级稳定的API,发布跟

顺其自然~专栏 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java cef linux_Cef介绍及下载地址和官方网站

介绍cef 是一个基于google chromiun的简单的框架。 它主要是作为一个内嵌浏览器嵌入到客户端应用程序中。可以再 http://cefbuilds.com 下载最新的编译版本。总体框架预览CEF 使用了多进程。主进程是“browser”进程。 而子进程是由rederes, plugins, GPU, 等组件创建。在ECF的所有进程中,都可以有多线程。CEF提供了函数和接口在不同的线程中...

weixin_36250200的博客 850

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

CEF3使用说明-中文资源下载介绍:深入掌握CEF3的宝贵指南

CEF3使用说明-中文资源下载介绍:深入掌握CEF3的宝贵指南 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发领域,CEF3(Chromium Embedded Framework 3)作为一种强大的开源框架,受到了许多开发者的青睐。它允许开发者将Chrome浏览器嵌入到他们的应用程序中,实现Web内容的渲染和JavaScript代码的执行。《CEF3使...

gitblog_06718的博客 304

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

cef运行框架_1.CEF(Chromium Embedded Framework)介绍-下载编译框架概念

1 前言1.1 CEF的作用1.2 CEF的下载和编译1.3 CEF结构1.3.1 CEF进程和窗口之间的结构关系1.3.2 Renderer进程的实现结构1.3.3 browser进程的实现结构1.4 CEF多进程和多线程1.4.1 进程1.4.2 线程1.5 网页嵌入应用程序结构1.5.1 入口函...

weixin_39708822的博客 6813
上一篇: 从用 AngularJS 开发 PC 客户端说起
下一篇: heX:用HTML5和Node.JS开发桌面应用
bamboolsu
博客等级 码龄22年 200粉丝 394原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值