如何加载嵌入Chromium(CEF)的本地html文件?

0pizxfdo  于 2022-10-16  发布在  其他
关注(0)|答案(2)|浏览(396)

我想将一个html文件加载到Chromium(CEF4Delphi)中,但什么都没有显示,只有一个白色页面。
是否可以使用以下方法加载本地html文件?
Here是html文件。
还有其他的麻烦,那就是每次执行Chromium时,也执行我的应用程序的其他示例。如何解决这个问题?
使用的代码:

var
  Form1: TForm1;
  FStarted: Boolean;

implementation

{$R *.dfm}

function CEFApplication: TCefApplication;
var
  sPath: String;
begin
  sPath := ExtractFilePath(ParamStr(0));
  if not assigned(GlobalCEFApp) then
  begin
    GlobalCEFApp := TCefApplication.Create;
    GlobalCEFApp.FlashEnabled := False;
    GlobalCEFApp.FastUnload := True;

    GlobalCEFApp.FrameworkDirPath := sPath + 'cef';
    GlobalCEFApp.ResourcesDirPath := sPath + 'cef';
    GlobalCEFApp.LocalesDirPath := sPath + 'cef\locales';
    GlobalCEFApp.Cache := sPath + 'cef\cache';
    GlobalCEFApp.Cookies := sPath + 'cef\cookies';
    GlobalCEFApp.UserDataPath := sPath + 'cef\User Data';
    GlobalCEFApp.EnableGPU := False;
  end;
  if not FStarted then
    FStarted := GlobalCEFApp.StartMainProcess;

  result := GlobalCEFApp;
end;

initialization

CEFApplication;

end.

Form2:

procedure TForm2.FormShow(Sender: TObject);
begin
  while not(Chromium1.CreateBrowser(CEFWindowParent1, '')) and
    (Chromium1.Initialized) do
  begin
    Sleep(100);
    Application.processMessages;
  end;
  Chromium1.LoadURL(ExtractFilePath(ExtractFilePath(Application.ExeName)) + 'gmaps.html');
end;

版本:

相对于我对正在执行的应用程序的多个示例的怀疑,这是基于这篇文章的正常和正确的。

ghhaqwfi

ghhaqwfi1#

我在我的代码中是这样做的:

CBrowser.Load('file:///' + ReplaceStr(fpath, '\', '/'));
xa9qqrwz

xa9qqrwz2#

CEF4Delphi对此有一个TChromium.LoadString
我是在一个受保护的

procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;

如下所示:

procedure TDialoogDeclaratieGoogleMaps.BrowserCreatedMsg(var aMessage : TMessage);
begin
  PanelBrowser.UpdateSize;      // The TCEFWindowParent
  ChromiumBrowser.LoadString(FGoogleHTML);   // String read from file earlier
end;

并且该消息将在After Created方法中发布:

procedure TDialoogDeclaratieGoogleMaps.ChromiumBrowserAfterCreated(Sender: TObject; const browser: ICefBrowser);
begin
  PostMessage(Handle, CEF_AFTERCREATED, 0, 0);
end;

相关问题