在首次使用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子句中。

最后修改:2020 年 01 月 29 日 12 : 09 PM
如果觉得我的文章对你有用,请随意赞赏