在首次使用CEF4Delphi之前,强烈建议阅读关于CEF3和 Chromium设计文档的所有信息。
CEF3使用多个进程,并且运行相同的可执行文件或不同的进程来创建它们。这就是为什么在TApplication运行之前需要对CEF3进行初始化的原因。
CEF4Delphi使用TCEFApplication类中的GlobalCEFApp简化了所有CEF3 初始化。
由于TApplication必须只在主进程中初始化和运行,所以有必要创建GlobalCEFApp并调用GlobalCEFApp.StartMainProcess来检测这是否是主进程。
Delphi应用程序在.Dpr文件中使用此代码:
program Project1;
uses
Vcl.Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
program Project1;
uses
Vcl.Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
要包含CEF4Delphi,您只需将uCEFApplication 和WinApi.Windows添加到USER子句,创建GlobalCEFApp全局变量,调用GlobalCEFApp.StartMainProcess函数和GlobalCEFApp在最后一步中。您还必须添加SetPEFlags指令。
program Project1;
uses
Vcl.Forms,
WinApi.Windows,
uCEFApplication,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
GlobalCEFApp := TCefApplication.Create;
if GlobalCEFApp.StartMainProcess then
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
GlobalCEFApp.Free;
end.
program Project1;
uses
Vcl.Forms,
WinApi.Windows,
uCEFApplication,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
GlobalCEFApp := TCefApplication.Create;
if GlobalCEFApp.StartMainProcess then
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
GlobalCEFApp.Free;
end.
GlobalCEFApp创建必须在.Dpr文件中,并且对GlobalCEFApp.StartMainProcess 的调用必须在if..then子句中。