CefSharp 初用遇到的一些问题及解决方法
之前用WebBrowser,打开网页很卡,但因为并是太要求速度和体验,所以可以显示html就可以了。但是,现在要求显示速度,最主要问题是WebBrowser控件的UserAgent,其实并不完全是IE(之前大家都以为是),而是7.0,有一个办法可以在注册表中修改,修改为10.0,但是在测试网站,如:http://whatsmyua.com/ ,显示的是WebBrowser,而不是IE10。应该是这个问题,使很多网站都会提示,版本太低或不支持这款浏览器,这样没办法正常显示,虽然只有少部分,但遇到关键的网站干着急。
找到CefSharp这个开发包,下载了源码和执行文件,速度比WebBrowser要快不卡了,而且有错误提示的网站也都正常显示了。但在分析源码时,遇到一些问题,由于独自研究耽搁一天多,以后也可能还会遇到,在此总结下。
源码分为几个工程,有WinForm和Wpf两种演示,虽然我很喜也更善长Wpf,但因为软件效率的原因,还是只看WinForm,有支持的VC托管工程CefSharp和CefSharp.WinForms,另外有mvc方式的示例c#工程CefSharp.Example,执行文件依赖的是CefSharp.dll和CefSharp.WinForms.dll。另外,需要加入icudt.dll和libcef.dll,生成操作设置无,输出设为新复制,因为CefSharp.dll需要,否则将会报错。另外,CefSharp是x86编辑,需要修改使用的工程属性在编译目标设置为x86,否则有编译警告。
将locales及其下所有都设置为输出,里面有个en-US.pak文件,如没有,则应用程序会启动显示错误退出。
再将devtools_resources.pak 设置为输出,否则调用devtools时将报错不能打开。(常见问题官网解释)
还有一个非常奇怪没能解决的问题,想封装WebView(CefSharp.WinForms.dll实现的浏览器类),到一个UserControl,但如果拖放这个控件到其它控件上或窗体上,则会报文件找不到CefSharp.dll或其依赖项,Reflector也没能找到到底是缺了什么。只要是在userControl引用WebView的实例就会报错,只能使用反射建立的办法迂回建立了。谁知道原因和办法,请发给我:)
上面说的CefSharp.Example定义了一个绕的方案的解决控制与视图间的关联,这样真的耦合低么,但我的需求很简单,就是按WebBrowser的设计封装一个相同方法的类,用来替换它。但后来发现,确实有必要,因为Cef的结构很繁杂,可能是功能多的原因吧。
IWebBrowser 有XXXXXHandle属性,用来控制浏览器的运行。之前我需要的不打开新窗口,只转向,需要实现ILifeSpanHandler,然后返回true证明处理了。
Cef分为系统初始化和设置参数,还有BrowserView的参数设置。更多的控制需要详看CefSharp.Example,我仔细看过,没什么不理解处。至于前面的VC工程实在没有细看的耐心了,暂时不需要。
c++和c#联合编成 使用webBrowser在网页中插入js脚本并执行 一个ISchemeHandler例子 用javascript获取图片颜色
CefSharp 初用遇到的一些问题及解决方法的更多相关文章
- seajs初尝 加载jquery返回null解决学习日志含示例下载
原文地址:http://www.tuicool.com/articles/bmuaEb 如需demo示例,请点击下方链接下载: http://yunpan.cn/cVEybKs8nV7CF 提取码 ...
- CefSharp F12打开DevTools查看console js和c#方法互相调用
转载地址: https://www.cnblogs.com/lonelyxmas/p/11010018.html winform嵌入chrome浏览器,修改项目属性 生成 平台为x86 1.nuget ...
- 关于Cefsharp无法拖动Dom元素的解决方法
如图所显示,Cefsharp在嵌入网页,页面有对Dom元素的拖动的操作,独立在浏览器上对网页元素的拖动是没有问题的,但是嵌入到Cefsharp上显示禁用的图标.排查了H5的代码,没有写入禁用拖动的操作 ...
- 初用eclipse和svn遇见的问题以及解决方法
第一次用eclipse 首先用SVN输入URI出现报错 去百度查了一下 大致就两点问题 1.防火墙的问题 2.SVN服务没开 我两个问题都不存在就去请教大神得到解决方案 解决方案:把URI的机器名改成 ...
- resin WED服务器初用遇到的问题和解决方法 java.lang.RuntimeException: java.net.SocketException: Unrecognized Windows Socke ts error: 0: JVM_Bind
开启resin 服务器以后提示如下:(控制台不断的循环循环打印如下错误提示) java.lang.RuntimeException: java.net.SocketException: Unrecog ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...
- EventBus初理解
缘由: 平时工作,因为懒于动笔的原因,也没注重技术和经验的积累,导致之前曾经研究过的问题现在又忘记了,所以要慢慢注重积累,那么就从写作开始,谈谈对工作中碰到的问题进行整理和归纳. 我们 ...
- 未能加载文件或程序集“CefSharp, Version=1.25.XXXX”或它的某一个依赖项。试图加载格式不正确的程序。
在使用CefSharp的过程中遇到一个坑爹的错误. 从GitHub的项目主页:https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-qu ...
随机推荐
- mvc 导入,导出excel
最近主要做导入excel 在网上查询了代码 public FileResult DownLoadExcelJiZuChaXunGenRenXiaoFeiJiLu() { DataTable dt = ...
- Mybatis 源码分析--crud
增加源码分析-insert() --------------------------------------------------------------------- public int ins ...
- ionic2 图片上传
参考URL:https://github.com/dsgriffin/Ionic-2-File-Transfer-Example
- C语言实现粒子群算法(PSO)二
上一回说了基本粒子群算法的实现,并且给出了C语言代码.这一篇主要讲解影响粒子群算法的一个重要参数---w.我们已经说过粒子群算法的核心的两个公式为: Vid(k+1)=w*Vid(k)+c1*r1*( ...
- Android斗地主棋牌游戏牌桌实现源码下载
本次给大家分享下Android斗地主棋牌游戏牌桌实现源码下载如下: 为了节约内存资源,每张扑克牌都是剪切形成的,当然这也是当前编程的主流方法. 1.主Activity package com.biso ...
- NSOperationQueue的其他方法
1.设置最大并发数 什么是并发数 同时执行的任务数 比如,同时开3个线程执行3个任务,并发数就是3 最大并发数的相关方法 - (NSInteger)maxConcurrentOperationCo ...
- BZOJ 1584 DP
显然序列不能超过sqrt(n),因为最差情况是每个都独立答案为n #include <iostream> #include <cstring> #include <cst ...
- meta头部标签意义作用!
1.<meta name="viewport" id="viewport" content="width=device-width, initi ...
- Java 正则表达式 量词 --- 三种匹配模式【贪婪型、勉强型、占有型】
1.Greediness(贪婪型):最大匹配X?.X*.X+.X{n,}都是最大匹配.例如你要用“<.+>”去匹配“a<tr>aava</tr>abb”,也许你所期 ...
- python-tab还是space?
今天把windows下的python代码传到服务器上,结果莫名其妙的报了一堆indent的错误 网上建议说用: python -m tabnanny filename.py 查一下 然后就用space ...