
CEF
文章平均质量分 50
老朱自强不息
这个作者很懒,什么都没留下…
展开
-
关于通过CEF加载Cesium项目的3dTiles模型,内存上涨的问题
项目上使用CEF加载web服务。Cesium是开源GIS引擎,可以加载大面积的航拍模型,格式为3dTiles。最近由于模型较大,发现一个问题:运行程序,什么都不操作,内存会不停上涨,直到耗尽所有系统内存。现象如下用抓包工具捕获一下网络请求,发现都是在加载tile块。找了好多资料,基本推断可能是两个方向发生了问题。一个是模型有问题,tile分块太多,另一个是CEF渲染模型时候发生异常,导致内存泄漏(类似这样的问题CEF Forum上有人反馈过,不过没找到解决办法)。所以优先从模型入手,因为原创 2020-07-21 11:00:56 · 4079 阅读 · 0 评论 -
CEF 窗口最小化后黑屏
基于前面的教程,应该可以完整搭建自定义的基于CEF的浏览器外壳程序。突然明白了破解为什么形象的称为脱壳了。哈哈。维护自定义的浏览器不是那么容易,有很多细节需要处理,也会遇到各种各样的问题。今天讲一个我遇到的问题 :浏览器最大化加载H5,然后最小化,过一段时间再最大化,之前的页面信息丢失。不是每次都能重现。网上搜了很久,没有相关的描述。后来在一个技术交流群里,有个人建议关闭GPU加速。我操作了一下,貌似有效果,感觉最重要的是“开启第一帧”,不过还需要进一步测试,修改内容如下: /*原创 2020-07-16 09:27:05 · 1809 阅读 · 2 评论 -
CEF json操作以及字符转化
CEF开发过程中,经常涉及字符转化的场景。其实CEF本身提供了很方便的字符转化操作,所以基本不需要使用一些API封装的字符转化函数。CEF封装的js 接口,传入的字符类型,默认都是utf8格式的编码。这里转化的时候需要注意一下,如果包含中文,转化过程中可能有乱码。CefString 与std::string 和 std::wstring 之间的转化CEF中的json操作比如现在封装一个支持前端调用,本地存储json文件的操作,并且返回文件路径到前端。前端传入json格式的字符串.原创 2020-06-19 16:19:37 · 1552 阅读 · 0 评论 -
CEF - F12调用控制台窗口
基于CEF3封装出的浏览器外壳程序,在实际使用中,需要调试前端的信息。所以需要调用控制台窗口,对打包的项目进行调试。实现方法通过两步实现。第一步捕获键盘F12消息类型;第二步调用ShowDevTools方法。捕获F12消息类型继承cefkeyboard_handler组件,重写OnPreKeyEvent方法实现ShowDevTools具体实现方法如下,这也是项目中实际使用的逻辑。控制台窗口作为独立的窗口弹出显示void CustomClient::ShowDevToo.原创 2020-05-16 15:55:48 · 6056 阅读 · 0 评论 -
VS 编译CEF,链接错误:error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”
最近重新编译CEF,发生如下错误1>libcef_dll_wrapper.lib(cef_logging.obj) : error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”(BrowserApp.obj 中)1>libcef_dll_wrapper.lib(browser_host_ctocpp.obj) : error LN...原创 2018-10-15 09:52:46 · 4901 阅读 · 0 评论 -
Cef3-- 启动慢的问题,增加loading
Cef内嵌在MFC应用程序中,去除标题栏,全屏显示,同时要保留任务栏。鼠标放到应用程序图标上(任务栏图标)显示标题。启动应用程序,从MFC应用初始化到CEF首页加载完成,大概需要6到8秒的时间,debug模式(会加载一些额外的符号信息)。针对以上需求,依次汇总一下解决办法(网上搜到的)。 Cef 启动慢 抛开技术问题,有几个设置会导致Cef启动慢。 局域网设置,【自动检测配置】;...原创 2018-08-15 17:20:43 · 4642 阅读 · 3 评论 -
CEF1
最近项目需要,毕竟有奶就是娘,需要封装一个浏览器应用,用于加载服务器服务到本地应用。可以一键解决跨域、网络不稳定等问题。下面梳理一下整个项目进展,BLOG和项目一同进行,遇到问题及时记录和寻找解决办法。 CEF是什么 CEF是一个开源的浏览器控件,基于谷歌浏览器webkit内核。也就是基于webkit内核封装出的一套操作浏览器的接口。还了解到有一个wke的浏览器内核。它是基于webkit...原创 2018-08-03 15:16:49 · 751 阅读 · 0 评论 -
Cef6 -- 下载支持
今天说一下CEF的下载模块,继承CefDownloadHandler模块,重写OnBeforeDownload和OnDownloadUpdated方法。第一篇已经讲过,CEF是一个封装的浏览器控件,以接口的形式封装,也就是CEF其实是多组接口函数的集合。CEF的开发是围绕接口的开发,所有行为的实现都需要继承相应的接口,重写对应的方法,达到修改默认行为的目的。实现下载,遇到一些问题,优快云的...原创 2018-08-11 17:02:20 · 2043 阅读 · 0 评论 -
CEF2 -- 基于CEF的多进程浏览器
如何构建CEF多进程模式上一篇介绍如何在win32项目中引入CEF。这一篇介绍一下,如何管理CEF的多进程模式,并进行调试。CEF是一个浏览器控件,进一步说是多组接口集合。嵌入CEF就是实现基于接口的二次开发。但这些接口又比较特殊,因为是开源的,所以可以跟踪、调试、甚至根据自己的需要进行定制、修改。接口就不做介绍了。下面就从项目由浅入深引入的CEF模块,分块做一下介绍。 CEF的...原创 2018-08-06 08:42:03 · 2790 阅读 · 0 评论 -
Cef5 -- 嵌入应用程序退出崩溃的问题
Cef是一个封装好的基于webkit的浏览器控件,以接口的方式封装。所以一般与现有应用程序集成,作为应用程序的一部分嵌入进去,比较常见的就是Win32项目、MFC项目。这篇主要讲Cef集成到项目中,应用退出时崩溃的问题。查了好多资料,cef退出一般有两件事必须做。第一,结束当前消息循环,第二,cefshutdown。经过验证,win32项目一般不存在这个问题(很多blog的正常套路不会...原创 2018-08-10 08:31:11 · 5058 阅读 · 1 评论 -
Cef4 -- 基于JS 扩展的消息传递
上篇代码贴的有点儿多,篇幅太长,Cef 中javascript 调用C++ 没有说完。这篇单独介绍通过javascript 扩展的方式调C++。整个Render进程启动的时候会调用OnWebKitInitialized,用来初始化浏览器的相关操作,而且这个操作是针对整个render进程周期的,这个时候v8引擎刚初始化完成。这里姑且认为Render进程维护一个v8 引擎,某一个时间只能存在一...原创 2018-08-09 15:46:35 · 4048 阅读 · 5 评论 -
CEF3 - 多进程模式消息传递
上一篇讲了如何构建可调试的多进程CEF应用,这篇讲一下各个进程之间的通信,包括C++ 调JS, js 调C++,以及browser和render进程的消息流动。为什么先从多进程入手,个人试了一下,单进程模式,各个线程切换以及执行的时机不是很清楚,也没找到调试的正确姿势。多进程把线程分解出来变成独立应用,也算是以空间换时间的一种策略。这一篇中个人遇到好几个问题,虽然最终解决了,但是原因一直不是特别清...原创 2018-08-09 09:33:51 · 4027 阅读 · 1 评论