크롬 웹브라우저를 응용 어플리케이션에 내장시켜 사용하기 위해서는 크롬 어플리케이션에 대한 Initialize / Finalize가 필요 합니다.
//크롬 어플리케이션 모듈 초기화
procedure InitializeCEF4Delphi;
begin
GlobalCEFApp := TCefApplication.Create;
// 크롬 웹브라우저를 사용하기 위해서는 반드시 CEF3 Binaries 파일 또는 캐시, 쿠키, 사용자 데이터 정보들이 필요한데
// 크롬 어플리케이션 초기화시에 다음 주석처리 부분을 활성화 시켜서 각종 라이브러리 바이너리 파일 또는 언어권 데이터 정보, 캐시, 사용자 데이터 경로 정보를 관리할
// 경로를 지정해 주어야 합니다.(캐시 및 사용자 데이터, 로그로 지정된 경로 및 파일은 쓰기 가능한 상태여야 합니다.
// 주석처리를 하면, 다운받은 CEF4 Binaries의 모든 파일들이 프로그램이 생성/실행되는 경로에 있어야 합니다.
{
GlobalCEFApp.FrameworkDirPath := 'cef';
GlobalCEFApp.ResourcesDirPath := 'cef';
GlobalCEFApp.LocalesDirPath := 'cef\locales';
GlobalCEFApp.cache := 'cef\cache';
GlobalCEFApp.UserDataPath := 'cef\User Data';
GlobalCEFApp.LogFile := 'debug.log';
GlobalCEFApp.LogSeverity := LOGSEVERITY_INFO;
}
GlobalCEFApp.WindowlessRenderingEnabled := True;
GlobalCEFApp.EnableHighDPISupport := True;
GlobalCEFApp.SetCurrentDir := True;
//GlobalCEFApp.BrowserSubprocessPath := 'OSRSubProcess.exe';
GlobalCEFApp.ExternalMessagePump := False;
//GlobalCEFApp.MultiThreadedMessageLoop := False;
GlobalCEFApp.DisableFeatures := 'NetworkService,OutOfBlinkCors';
GlobalCEFApp.StartMainProcess;
end;
//어플리케이션 종료시 크롬 모듈에 대한 해제 작업을 반드시 해 주어야 합니다.
procedure FinalizeCEF4Delphi;
begin
DestroyGlobalCEFApp;
end;
일반적인 형태의 프로젝트(.dpr)에서 초기화 하는 방법(Simple Browser)
program SimpleBrowser;
{$I cef.inc}
uses
{$IFDEF DELPHI16_UP}
Vcl.Forms, WinApi.Windows,
{$ELSE}
Forms, Windows,
{$ENDIF}
uCEFApplication,
uSimpleBrowser in 'uSimpleBrowser.pas' {Form1};
{$R *.res}
// 32bit 응용 프로그램에서 3G 이상의 이미지 처리를 위해서 RAM확장이 필요한 경우 아래 컴파일 지시자를 지정
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
GlobalCEFApp := TCefApplication.Create;
//바이너리 및 캐시, 쿠키, 사용자 데이터 경로를 지정하는 경우 활성 처리.
{
GlobalCEFApp.FrameworkDirPath := 'cef';
GlobalCEFApp.ResourcesDirPath := 'cef';
GlobalCEFApp.LocalesDirPath := 'cef\locales';
GlobalCEFApp.EnableGPU := True; // Enable hardware acceleration
GlobalCEFApp.cache := 'cef\cache';
GlobalCEFApp.cookies := 'cef\cookies';
GlobalCEFApp.UserDataPath := 'cef\User Data';
}
// 안정성을 향상시키기 위한 특정 옵션 비활성화 처리.
GlobalCEFApp.DisableFeatures := 'NetworkService,OutOfBlinkCors';
//크롬 모듈이 반드시 필요한 경우 조건 처리에 의한 메인 프로세스 시작
if GlobalCEFApp.StartMainProcess then
begin
Application.Initialize;
{$IFDEF DELPHI11_UP}
Application.MainFormOnTaskbar := True;
{$ENDIF}
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
GlobalCEFApp.Free;
GlobalCEFApp := nil;
end.
** 혹시 컴파일시 IMAGE_FILE_LARGE_ADDRESS_AWARE가 정의되어 있지 않다는 오류가 발생한다면 다음과 같이 해당 상수를 선언해 주면 해결 된다.
32비트 윈도에서 돌아가는 프로그램이 최대한 사용할 수 있는 메모리는 2GB까지입니다. 32비트 윈도의 실행 스위치(/3GB)를 조절하면 3GB 까지 사용할 수 있고 64비트 윈도에서는 최대 4GB까지 사용할 수 있습니다(정확한 메모리 사용량 정보는 MS Knowledge Base Q889654 참조). 하지만 두가지 경우 모두 실행 파일의 옵션에 LARGEADDRESSAWARE 옵션이 켜져 있어야만 가능
const
IMAGE_FILE_LARGE_ADDRESS_AWARE = $0020;
'프로그래밍 > Chromium(CEF4Delphi)' 카테고리의 다른 글
[Chromium] CEF4Delphi - 크롬웹브라우저에 키보드/마우스 이벤트 전달하기 (1) | 2019.09.17 |
---|---|
[Chromium] CEF4Delphi - 웹브라우저 컨테이너 폼 Closing Process (0) | 2019.09.17 |
[Chromium] CEF4Delphi - 크롬브라우저 생성 절차 (0) | 2019.09.16 |
[Chromium] CEF4Delphi - 설치 (0) | 2019.09.10 |
[Chromium] CEF4Delphi 소개 (0) | 2019.04.17 |