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 = classclass 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);varmsg: ICefProcessMessage;beginmsg := TCefProcessMessageRef.New('mouseover');msg.ArgumentList.SetString(0, data);TCefv8ContextRef.Current.Browser.SendProcessMessage(PID_BROWSER, msg);end;class function TTestExtension.hello: string;beginResult := '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版本单进程不是很稳定,不建议使用单进程模式
    delphi  lazarus  opengl
网页操作自动化, 图像分析破解,游戏开发