ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

dcef3 基本使用经验总结

2019-06-20 15:01:06  阅读:385  来源: 互联网

标签:基本 AppendSwitch end commandLine flash dcef3 进程 procedure 经验总结


dcef3 基本使用经验总结

https://www.cnblogs.com/h2285409/p/10517483.html

加载命令启动参数    --enable-system-flash 会加载系统默认的flash浏览器

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 procedure OnBeforeCmdLine(const processType: ustring; const commandLine: ICefCommandLine); begin   commandLine.AppendSwitch('--enable-system-flash');   commandLine.AppendSwitch('--disable-web-security');   commandLine.AppendSwitch('no-proxy-server'); end;   begin   CefCache := 'cache';   CefLocale := 'zh-CN';   CefOnBeforeCommandLineProcessing := OnBeforeCmdLine;   CefSingleProcess := False;     if not CefLoadLibDefault then     Exit;     Application.Initialize;   Application.CreateForm(TMainForm, MainForm);   Application.Run; end.

  

其它cmdLine

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 procedure OnBeforeCmdLine(const processType: ustring; const commandLine: ICefCommandLine); begin     //加载系统安装的flash,使用前系统需安装flash播放器   //commandLine.AppendSwitch('--enable-system-flash');     //允许js跨域   commandLine.AppendSwitch('--disable-web-security');   str_ip:='218.207.212.79:80';  //设置代理ip  120.203.159.18:8118  218.189.26.20:8080   commandLine.AppendSwitchWithValue('proxy-server',str_ip);     //禁用代理   //commandLine.AppendSwitch('no-proxy-server');     //不同域名不同进程   commandLine.AppendSwitch('--process-per-site');     //指定子进程渲染   //commandLine.AppendSwitchWithValue('browser-subprocess-path', 'cefsubprocess.exe');     //加载指定flash版本   commandLine.AppendSwitchWithValue('ppapi-flash-version''21.0.0.213');   commandLine.AppendSwitchWithValue('ppapi-flash-path''PepperFlash\pepflashplayer.dll'); end;

  

拓展JS方法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 TCustomRenderProcessHandler = class(TCefRenderProcessHandlerOwn)   protected     procedure OnWebKitInitialized; override;   end;   TTestExtension = class class function hello: string; class procedure mouseover(const data: string); end;   procedure TCustomRenderProcessHandler.OnWebKitInitialized; begin {$IFDEF DELPHI14_UP}   TCefRTTIExtension.Register('app', TTestExtension); {$ENDIF} end;   class procedure TTestExtension.mouseover(const data: string); var msg: ICefProcessMessage; begin msg := TCefProcessMessageRef.New('mouseover'); msg.ArgumentList.SetString(0, data); TCefv8ContextRef.Current.Browser.SendProcessMessage(PID_BROWSER, msg); end;   class function TTestExtension.hello: string; begin Result := 'Hello from Delphi'; end;   initialization   CefRemoteDebuggingPort := 9000;   CefRenderProcessHandler := TCustomRenderProcessHandler.Create;   CefBrowserProcessHandler := TCefBrowserProcessHandlerOwn.Create;

  

Delphi执行JS方法

1 2 3 4 5 6 procedure TMainForm.actExecuteJSExecute(Sender: TObject); begin   if crm.Browser <> nil then     crm.Browser.MainFrame.ExecuteJavaScript(       'alert(''JavaScript execute works!'');''about:blank'0); end;

 

 

一般单进程模式是用来调试的,release版本最好是多进程模式,如果debug版本也是多进程的话,由于Browser、Rendder等进程是独立分开的,所以即便在一些函数中打上断点也进不去!而单进程话就都可以进去。至于debug版本多进程模式下为何会弹出两个主程序窗口我也不是很清楚,但是release版本多进程模式下就正常了,只有一个主程序窗口。并且多进程模式下调用CefShutdown就是OK的,app也能够正常析构,而单进程模式调用CefShutdown会直接崩溃!

  另外,官方文档上说release版本单进程不是很稳定,不建议使用单进程模式

标签:基本,AppendSwitch,end,commandLine,flash,dcef3,进程,procedure,经验总结
来源: https://www.cnblogs.com/delphi-xe5/p/11058695.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有