delphi chrome cef3 控件学习笔记 (一)

CEF简介: 

   嵌入式Chromium框架(简称CEF) 是一个由Marshall Greenblatt在2008建立的开源项目,它主要目的是开发一个基于Google Chromium的Webbrowser控件。CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去。

  它的设计思想政治就是易用且兼顾性能。CEF基本的框架包含C/C++程序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和Chromium&Webkit的操作细节。它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户插件,协议,JavaScript对象以及javascript扩展,宿主程序可以随意地控件资源下载,导航,下下文内容和打印等,并且可以跟Google Chrome浏览器一起,支持高性能和HTML5 技术,


这段代码你可以在[test]文件夹下面的cefclient工程里面看到。


文件结构:

  include -- 这个文件夹里面放CEF客户应用程序所需的头文件

  libcef -- 此文件夹存放CEF的静态库

  libcef_dll -- 此文件夹CEF的动态拉链库

  tests -- 此文件夹存放测试的例子

       cefclient -- 一个简单的客户程序

       unittests --  CEF界面单元测试



浏览器事件:
   应用程序通过调用CefBrowser和CefFrame的方法来处理浏览器控件事件:
       a.Back, Forward, Reload and Stop Load。控件浏览器的导航
       b.Undo, Redo, Cut, Copy, Paste, Delete, Select All.控件目标框架的选取
       c.Print。打印目标框架
       d.Get Source。以字符串的形式来获取目标框架的HTML源码
       e.View Source. 用缓存文件来保存目的框架的HTML源码,并且用系统默认的文本查看器打开
       f.Load URL.加载特定的URL到目标框架
       g.Load String. 加载一个特定的字符串到目标框架,通过一个随意指定的虚拟URL
       h.Load Stream. 加载一个特定的二进制文件到目标框架,通过一个随意指定的虚拟URL
       i.Load Request, 加载一个特定的请求到目标框架
       j.Execute JavaScript: 在目标框架里面执行一个特定的Javscript命令
       k. Zoom。 缩放特定框架的网页内容
插入网景风格插件:
      CEF支持插入网景风格的插件,插入插件的动作跟正常插入基本动态链接库的插件一样,但是做为一个单独的Dll,必须通过容器来创建,并且要用CefRegisterPlugin()这个函数来注册到系统里面去。你要调用这个函数的话,你就得包含cef_nplugin.h这个头文件。
JavaScript扩展:
    CEF支持能连接本地程序源代码的Javascript扩展,演示程序你可以去看cef_v8.h进而的CefRegisterExtension()方法,还有CEFClient下面的演示例子,你如果想得到更多的信息,可以点下面的链接:  JavaScriptIntegration。
用户计划:
    CEF支持注册和处理像myscheme://mydomain一样的用户计划,你可去查看cef_scheme.h里面的CefRegisterScheme()和Scheme Handler测试单元,得到详细的说明。
框架总览:
   所有的文件前缀都是Cef
框架的建立和销毁:
   CEF的UI消息寄宿在一个框架建立的单线程中,用户只负责用CefInitialize()和CefShutdown()来建立和销毁这个线程,但是你如果设置了CefSettings.multi_threaded_message_loop, 这个UI消息循环也可以运行在一个单独的线程里面。
引用计数:
   所有的框架数都从CefBase这个基类继承而来,并且所有的实例指针都用CefRefPtr智能指针来管理,可以用AddRef()和Release()函数来自动处理引用计数。
平台无关:
   CEF框架被设计成平台无关的,现在它支持Windows,Mac os-x和Linux,为了无缝地支持多种平台,框架定义了一系列的平台无关的接口和类型定义。
框架接口:
      CefBrowser是主要的浏览器窗口类,可以用静态的函数CreateBrowser() 和CreateBrowserSync() 来创建一个新的浏览器窗口。
      CefFrame 代表一个浏览器窗口的框架,每个浏览器窗口有一个顶层的主框架,而这个主框架可以用GetMainFrame() 方法得到。
      CefClient是主浏览器窗口的代表接口,这个接口做为参数传递给CreateBrowser()
      CefRequest 代表URL,方法,发送数据和头文件等这样的请求。
      CefSchemeHandleFactory 类是被用来处理像myscheme://mydomain类似客户计划的请求
      CefReadHandler和CefWriteHandle是一个读写数据的简单接口。
      CefV8Handler,CefV8Value和CefV8Context是被用来创建和访问JavaScript对象。
Cef3下载下来的文件结构:

bin目录是主要存放DLL,你需要把bin目录下所有的文件,到你的Exe的当前文件夹,否则就会报错!code 126

demo 为例子
packages为压缩包
src主要源代码部分,需要在delphi的library添加这个src的路径
安装完成之后,新建一个Demo1,拖一个chromium控件出来并命名为chrm1,并把bin目录下所有文件,到你的程序的当前文件夹;
再拖一个button,双击加入代码:
 chrm1.Browser.MainFrame.LoadUrl('about:blank'); //第一次必须先加载空白页,才能浏览其他网页
 chrm1.Browser.MainFrame.LoadUrl('你要浏览的网址');
至此第一个例子完成!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
期待着您的参与 DELPHI社群中开源项目少之又少,我们可不可以自己组织?我们可不可以一起探讨?小弟不才,斗胆写下几行代码,来这里期待抛砖引玉。 我们身边,每天都有无数的项目开工,然后是老板对进度的紧追不舍,项目经理程序员加班的无奈,再然后或许是成功的喜悦或许是失败的哀愁,但不管结果如何,所有人心中此时最想要的,可能是好好的睡上一觉。 这无数的项目,他们有没有共同点?我们是不是一直在做重复发明轮子的蠢事?Delphi让我们搭建一个程序变得容易,我希望通过我们的努力,让我们搭建一个项目更容易,利用我们可以想到的任何办法,不管是框架源代码、模版文档、代码生成工具甚至是我们手把手经验的交流,我们的目标就是让一个项目开发更加的容易、让一个项目成功更加的容易。 这样的工作是激动人心的,可是我也和大家一样,面临着手头上项目的压力,为了能够对得起那份薪水,我只能够在下班的时间里做这些。但一个人精力太有限了,uPattern是一个模式实现单元,没有足够的时间也没有那么多精力去实现所有的模式,于是在这份源代码里,您发现您可以使用一个用户组来登录,本来这是不允许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现使用的是原始的透明方式…… 一个人的力量太有限了,一个人的才智也太有限了,如果这个小生命在我一个人的手里,也许会因为得不到充足的阳光雨露而不能茁壮成长,但是如果有您的加入,多了您的呵护,相信我们的目标才更有可能实现。 如果您是高手,那么就在这里表现您的聪明才智吧。如果您是菜鸟,来这里汲取知识吧。所有的源代码都永久性公开,如果您有什么地方不清楚或者是有更好的建议,您也可以直接联系我。 ―――――――――――――――――――――――――――――――――― 这是一个应用程序框架,现在已经完成部分框架代码与用户管理、权限管理与日志管理模块。如果您有任何的问题或者是建议可以发邮件到我的邮箱,您可以使用本源代码在您的任何应用之中(包括商业应用)。如果您想要和我们一起来发展壮大这份源代码,请您发邮件给我([email protected]),或者是在下面留言。 ――――――――――――――――――――――――――――――――――     uClasses------------------------------在这里定义应用程序中的基础类     uPattern------------------------------几个模式的DELPHI实现或者定义     uAppUtils-----------------------------应用程序工具单元     uAppSet-------------------------------应用程序设置接口声明单元     uAppSetIniFile------------------------应用程序设置IniFile实现单元     uException----------------------------异常统一处理单元     uAppFactory---------------------------应用程序工厂,本工厂生产出来的就是一个一般的应用程序     uAuthAppFactory-----------------------应用程序工厂,本工厂生产出来的就是拥有权限管理、日志及用户管理的程序     ufrmAppBase---------------------------窗口基类     ufrmAppDlgBase------------------------对话框窗口基类    用户、权限与日志管理单元     Role----------------------------------权限与用户管理主要的实现单元     Log-----------------------------------日志管理单元     ufrmRoleManager-----------------------权限管理主用户界面     ufrmLogin-----------------------------用户登录界面     ufrmChangePassword--------------------更改用户密码     ufrmLog-------------------------------日志查看界面     CommandRegister-----------------------模块注册中心

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值