[原创]嵌入CEF遇到的问题及解决方案

这几天程序嵌入谷歌浏览器,各种坑,不容易,记录之。。。希望到此为止

1. 开了多进程模式之后,渲染进程RenderProcess断点没有进入。

  只有在单进程模式(CefSingleProcess为true)下调试,渲染进程的断点才会进入。如果开多进程模式,那么渲染进程是在另外一个进程,不是主进程,当前调试进程是主进程,所以就没法进入渲染进程的断点,但是实际上,渲染进程的RenderProcessHandler的方法还是会被触发的。

2. 在渲染进程操作浏览器进程没有效果。

  渲染进程(RenderProcess)和浏览器进程(BrowserProcess)之间的通讯必须通过进程间通讯才可以,直接调用是没有效果的。不管是在多进程模式下还是在单进程模式下。

3. 多进程模式下进程间通讯传接口地址失败。

  多进程模式下,进程不在同一个地址空间,不能直接传地址,只能传值类型。

4. 有下载的页面打开后,再关闭程序后会自动启动一次程序。

  自动启动程序应该是程序崩溃后CEF的机制,那么问题应该是关闭时程序崩溃了。猜测是有下载页面,CEF会启动一个下载进程,而这个下载进程会关联窗体,如果在CEF调用CefShutDown之前窗体已经释放掉了,就会崩溃。所以我的办法是在窗体释放前就调用了CefShutDown,不知道是不是这个原因,反正问题解决了。

5. 快速打开很多页面时整个程序会卡死。

  猜测是GPU合成的问题,关闭后就没有这个现象了。

6. 每开一个Tab都会创建一个进程。

  参考下面的说明,根据需求开启不同的进程模型。

    1. Process-per-site-instance:就是你打开一个网站,然后从这个网站链开的一系列网站都属于一个进程。这是Chrome的默认模式。
    2. Process-per-site:同域名范畴的网站放在一个进程,比如www.google.com和www.google.com/bookmarks就属于一个域名内(google有自己的判定机制),不论有没有互相打开的关系,都算作是一个进程中。用命令行--process-per-site开启。
    3. Process-per-tab:这个简单,一个tab一个process,不论各个tab的站点有无联系,就和宣传的那样。用--process-per-tab开启。
    4. Single Process:这个很熟悉了吧,传统浏览器的模式,没有多进程只有多线程,用--single-process开启。

7. 没有了

时间: 2024-10-17 18:16:58

[原创]嵌入CEF遇到的问题及解决方案的相关文章

集团公司(嵌入ETL工具)财务报表系统解决方案

集团公司(嵌入ETL工具)财务报表系统解决方案 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包括:金矿.铜矿.房产.化纤等.由于子公司在业务上的差异,子公司的财务报表也存在很多不同之处.因此,各个子公司需要根据自己的情况,制作符合自己个性化需求的报表模版,然后再部署到集团服务器进行统一管理. 集团使用的是SAP,所有子公司正是因这个系统而产生大量数据且这些数据保存在一起.此外,各子公司也有一些自己的系统,所以各自也会产生一些数据. 出于数据安全等因

Duilib嵌入CEF禁止浏览器响应拖拽事件

在开发中有一个需求,拖拽外部文件到客户端,然后客户端响应WM_DROPFILES消息,在拖拽消息里处理一下业务,最后把处理结果显示到客户区html中,但实际中发现当拖拽文件到客户区,浏览器首先处理了拖拽事件,外层的Win32窗口无法捕捉到拖拽消息,因此要想实现此操作,刚开始我想了一个本办法,在客户区最外层罩了一个透明的Win32原生窗口,这样拖拽文件时,在最外层透明窗口的WM_DROPFILES消息中处理具体业务,最后用C++调用js函数,在页面显示处理结果. 方法一: 透明窗口 Layered

Cef功能开发经验总结

转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/70159672 这是我开发Cef功能时对踩过的坑,进行的总结,话说Cef坑真的不少.好在踩完后用起来还是挺爽的.最终的代码可以下载网易云信PC Demo点我跳转 资料准备 这是我集成过程中查到的一些资料,包括了Cef开发的各方面资料 在调试Cef时需要Cef的pdb和源码: Cef及pdb文件下载地址,其中的CefClient包含了Cef绝大多数功能的示例:https:/

NET实现的DDD、CQRS与微服务架构

WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例 最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架构的应用程序案例,并结合领域驱动设计(DDD)以及命令查询职责分离(CQRS)体系结构模式,对事件驱动的微服务系统架构进行了一些实战性的探索.现将自己的思考和收获整理成文,分享给大家. 微服务架构 在介绍源代码之前,我还

Android IOS WebRTC 音视频开发总结(三四)

最近好不容易更新了PC版的WEBRTC,总结下有哪些调整,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. 图1:解决方案工程结构对比: 说明: 1, 最大的调整就是移除了VideoEngine模块,相关影响如下: 1.1, WebRTCDemo里面移除了视频通话, 语音通话还存在,不过移除是迟早的事情, 后续这个Demo会完全移除. 1.2, 以前那种直接调用VideEngine,VoiceEngine接口进行操作的,升级新版后比较痛苦了,要改动的内容太多. 图二:升级新版后P

转:?Android IOS WebRTC 音视频开发总结 (系列文章集合)

随笔分类 - webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). callstats是一家做实时通讯性能测阅读全文 posted @ 2016-07-22 08:24

qt cef嵌入web

原文http://blog.sina.com.cn/s/blog_9e59cf590102vnfc.html 最近项目需要,研究了下libcef库. Cef(Chromium Embedded Framework)简述 嵌入式Chromium框架(简称CEF) 是一个由Marshall Greenblatt在2008建立的开源项目,它主要目的是开发一个基于Google Chromium的Webbrowser控件.CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去. 它

Windows上使用CEF嵌入基于chrome内核浏览器小例

CEF出来很久了,使用的也很广泛的,QQ里面很多地方都是嵌入的CEF浏览器(个人资料.微博.查找--),网上的资料也挺多的,大家可以搜搜看. 首先是下载CEF代码编译,通过里面的那两个例子你也可以依葫芦画瓢的.官方下载地址:http://cefbuilds.com/ 这里推荐一个很详细的解说:http://www.cnblogs.com/think/archive/2011/10/06/CEF-Introduce.html 重载CEF的各种"消息"处理类,当你需要自己处理或者自定义这些

qt cef嵌入web(二)

在qt cef嵌入web文章中已经讲述了怎么把cef页面嵌入到qt程序中,但是这样并不完美,因为如果需要在多个窗口上创建cef浏览器部件的话,在 消息监听部分没有办法做区分多个浏览器事件,在这篇文章中我将会把上一篇相关文章中的程序结构稍作改动,以支持多个主浏览器窗口,主要是针对不同的浏览器 产生事件时分发给不同的监听者,说到这儿,有的读者应该就能想到了,监听者肯定是一个数组了,而且 个数和浏览器数目一样多.     在接着往一下看的时候,我默认大家都已经完成创建浏览器并可以成功监听事件.