Einzelnen Beitrag anzeigen

Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#1

Chromium Embedded und Firemonkey

  Alt 16. Apr 2021, 12:40
Hi,

ich wollte mit LibCEF einen einfachen Offscreen Renderer bauen der mir in eine Bitmap die Webseite rendert. Das geht im Prinzip auch wie es soll, aber ich kriege die Anwendung nicht beendet. Ich konnte das ganze auf folgenden Code herunter trimmen:

Delphi-Quellcode:
unit UMain;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs;

type
  TForm3 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation uses uCEFFMXWorkScheduler, UCefApplication;

{$R *.fmx}


procedure GlobalCEFApp_OnScheduleMessagePumpWork(const aDelayMS: int64);
begin
  if (GlobalFMXWorkScheduler <> nil) then
    GlobalFMXWorkScheduler.ScheduleMessagePumpWork(aDelayMS);
end;

procedure CreateGlobalCEFApp;
begin
  if assigned(GlobalCEFApp) then
    exit;

  GlobalFMXWorkScheduler := TFMXWorkScheduler.Create(nil);

  GlobalCEFApp := TCefApplication.Create;
  GlobalCEFApp.OnScheduleMessagePumpWork :=
    GlobalCEFApp_OnScheduleMessagePumpWork;
  GlobalCEFApp.EnableHighDPISupport := true;
  GlobalCEFApp.ExternalMessagePump := true;
  GlobalCEFApp.MultiThreadedMessageLoop := False;
  GlobalCEFApp.cache := 'cache';
  GlobalCEFApp.StartMainProcess;
end;


initialization

 CreateGlobalCEFApp;

finalization
 if assigned(GlobalFMXWorkScheduler) then
   GlobalFMXWorkScheduler.StopScheduler;

 DestroyGlobalCEFApp;

 DestroyGlobalFMXWorkScheduler;
end.
Eigentlich mache ich hier nichts anderes als die GlobalCefApp Klasse, den Scheduler zu erstellen und am Ende das ganze wieder zu beenden. Das macht er aber nicht. Irgendwie bleibt das MainForm als Kopie bestehen und cef_shutdown hängt fest.

Die Beispiele von LibCEF sind alles andere als übersichtlich und ich sehe dort nicht was die bei der Initialisierung anders machen.
  Mit Zitat antworten Zitat