You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-06-12 22:07:39 +02:00
Added the Lazarus_Linux_Console\LibraryBrowser demo
This commit is contained in:
@ -0,0 +1,120 @@
|
||||
unit ucustombrowserloader;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils;
|
||||
|
||||
const
|
||||
LIBNAME = 'libcustombrowser.so';
|
||||
|
||||
type
|
||||
TInitializeCEF4DelphiFunc = procedure; cdecl;
|
||||
TFinalizeCEF4DelphiFunc = procedure; cdecl;
|
||||
TTakeSnapshotFunc = procedure; cdecl;
|
||||
|
||||
TCustomBrowserLoader = class
|
||||
private
|
||||
FInitializeCEF4Delphi : TInitializeCEF4DelphiFunc;
|
||||
FFinalizeCEF4Delphi : TFinalizeCEF4DelphiFunc;
|
||||
FTakeSnapshot : TTakeSnapshotFunc;
|
||||
FLibHandle : TLibHandle;
|
||||
FLibLoaded : boolean;
|
||||
|
||||
function GetLibPath : string;
|
||||
function LoadCEFLibrary: boolean;
|
||||
procedure UnloadCEFLibrary;
|
||||
procedure InitializeCEF4Delphi;
|
||||
procedure FinalizeCEF4Delphi;
|
||||
|
||||
public
|
||||
constructor Create;
|
||||
procedure AfterConstruction; override;
|
||||
procedure BeforeDestruction; override;
|
||||
procedure TakeSnapshot;
|
||||
end;
|
||||
|
||||
var
|
||||
GlobalCustomBrowseLoader : TCustomBrowserLoader = nil;
|
||||
|
||||
implementation
|
||||
|
||||
constructor TCustomBrowserLoader.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
FInitializeCEF4Delphi := nil;
|
||||
FFinalizeCEF4Delphi := nil;
|
||||
FTakeSnapshot := nil;
|
||||
FLibHandle := 0;
|
||||
FLibLoaded := False;
|
||||
end;
|
||||
|
||||
procedure TCustomBrowserLoader.AfterConstruction;
|
||||
begin
|
||||
inherited AfterConstruction;
|
||||
|
||||
if LoadCEFLibrary then
|
||||
InitializeCEF4Delphi;
|
||||
end;
|
||||
|
||||
procedure TCustomBrowserLoader.BeforeDestruction;
|
||||
begin
|
||||
FinalizeCEF4Delphi;
|
||||
UnloadCEFLibrary;
|
||||
|
||||
inherited BeforeDestruction;
|
||||
end;
|
||||
|
||||
function TCustomBrowserLoader.LoadCEFLibrary: boolean;
|
||||
begin
|
||||
Result := False;
|
||||
FLibHandle := LoadLibrary(GetLibPath());
|
||||
|
||||
if (FLibHandle <> 0) then
|
||||
begin
|
||||
Pointer(FInitializeCEF4Delphi) := GetProcAddress(FLibHandle, 'InitializeCEF4Delphi');
|
||||
Pointer(FFinalizeCEF4Delphi) := GetProcAddress(FLibHandle, 'FinalizeCEF4Delphi');
|
||||
Pointer(FTakeSnapshot) := GetProcAddress(FLibHandle, 'TakeSnapshot');
|
||||
|
||||
FLibLoaded := assigned(FInitializeCEF4Delphi) and
|
||||
assigned(FFinalizeCEF4Delphi) and
|
||||
assigned(FTakeSnapshot);
|
||||
|
||||
Result := FLibLoaded;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TCustomBrowserLoader.GetLibPath : string;
|
||||
begin
|
||||
Result := IncludeTrailingPathDelimiter(ExtractFileDir(ParamStr(0))) + LIBNAME;
|
||||
end;
|
||||
|
||||
procedure TCustomBrowserLoader.UnloadCEFLibrary;
|
||||
begin
|
||||
if FLibLoaded then
|
||||
FreeLibrary(FLibHandle);
|
||||
end;
|
||||
|
||||
procedure TCustomBrowserLoader.InitializeCEF4Delphi;
|
||||
begin
|
||||
if FLibLoaded then
|
||||
FInitializeCEF4Delphi();
|
||||
end;
|
||||
|
||||
procedure TCustomBrowserLoader.FinalizeCEF4Delphi;
|
||||
begin
|
||||
if FLibLoaded then
|
||||
FFinalizeCEF4Delphi();
|
||||
end;
|
||||
|
||||
procedure TCustomBrowserLoader.TakeSnapshot;
|
||||
begin
|
||||
if FLibLoaded then
|
||||
FTakeSnapshot();
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Reference in New Issue
Block a user