Chromium Embedded Framework (CEF)是个基于Google Chromium项目的开源Web browser控件,支持Windows, Linux, Mac平台。除了提供C/C++接口外,也有其他语言的移植版。因为基于Chromium,所以CEF支持Webkit & Chrome中实现的HTML5的特性,并且在性能上面,也比较接近Chrome。
CEF还提供的如下特性:自定义插件、自定义协议、自定义JavaScript对象和扩展;可控制的resource loading, navigation, context menus等等。dcef是指的cef在delphi中的版本
cef在前期版本中是自带支持flash插件的,后来Chromium不再默认支持flash控件!下面看看我的程序的dcef命令行参数

- 安装好dcef,不管哪个版本都行!
- 安装360极速浏览器或QQ浏览器,打开其安装目录,找到ppflash目录和npflash目录(360极速浏览器是这两个目录,而QQ浏览器略有不同)!
- 在你的工程目录中建NativeFlash目录和PepperFlash目录,然后360的npflash目录下的NPSWF开头的dll文件和同目录下的vch文件复制到自己工程的NativeFlash中,把360的ppflash目录中的pepflash开头的dll文件和同目录下的json文件复制到工程的PepperFlash目录中!这一步就是用360浏览器的flash文件,不需要你手工去下载安装插件!至少你应该发现即使你的系统没有安装flash插件,但360浏览器安装后一样可以正常播放flash,这就是因为他的目录中自带了这几个flash文件,为了让你的程序的dcef支持flash,所以我们直接复制360极速浏览器的flash文件过来,简单方便!
- 编辑你的delphi工程文件(即dpr文件),在{$R *.res}后面添加如下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21procedure AppendCefCmdline(const processType: ustring; const cmd: ICefCommandLine);
begin
//cmd.AppendSwitch('--enable-gpu-plugin');//允许gpu
//cmd.AppendSwitch('disable-gpu');//禁止gpu
cmd.AppendSwitch('enable-npapi'); //允许NativeFlash
//cmd.AppendSwitch('enable-tab-audio-muting');//允许tab页禁音
//cmd.AppendSwitch('--enable-media-stream'); //允许视频流
cmd.AppendSwitchwithvalue('load-plugin', 'NativeFlash\NPSWF32.dll');//指定NativeFlash插件文件位置,注意文件名要和你的一致
//cmd.AppendSwitchWithValue('ppapi-flash-version','20.0.0.267');//指定PepperFlash版本号
cmd.AppendSwitchWithValue('ppapi-flash-path','PepperFlash\pepflashplayer.dll');//指定PepperFlash插件文件位置,注意文件名要和你的一致
cmd.AppendSwitch('--enable-system-flash');//允许PepperFlash
//cmd.AppendSwitch('--enable-usermedia-screen-capturing');
end;
begin
CefOnBeforeCommandLineProcessing :=AppendCefCmdline; //这一句就是指定了dcef启动的命令行
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.
很多人用delphi的dcef写的程序,不支持flash,是只在命令行中添加了允许flash,而没有指定flash插件文件的位置,这时dcef会去调用系统安装的flash插件,一旦系统插件有问题,你的程序就无法播放flash了,本文写的方法就是360极速浏览器的方法,不管你的系统安装不安装flash,一样播放flash!
而要让dcefbrowser支持flash也一样,dcefbrowser中只是把CefOnBeforeCommandLineProcessing改为DcefBApp.OnBeforeCommandLineProcessing即可,至于播放flash会有dos窗口弹一下的问题,请看本站的这篇文章http://www.bnwin.com/2017/12/01/328.html