一、簡介
cef4delphi是一款基於Chromium Embedded Framework(CEP)封裝的Delphi組件庫,用於在Delphi應用程序中集成嵌入式瀏覽器。
CEF是基於谷歌Chromium瀏覽器內核開發的,能夠完美支持各種網頁特效,同時具有跨平台、高性能、可擴展性和安全性等優點。而CEF在Delphi環境下的應用,需要集成C++代碼,編譯過程繁瑣,在此過程中,cef4delphi作為一款高度封裝的Delphi組件庫,解決了這些問題,使得Delphi開發者能夠更加便捷高效地實現應用程序中嵌入式瀏覽器功能。
二、監聽事件
cef4delphi提供了大量的監聽器接口,開發者可以通過實現這些接口來監聽瀏覽器的各種事件。
1、ILifeSpanHandler
該接口用於處理瀏覽器生命周期事件,比如窗口關閉、窗口最小化等。具體來說,它包含6個方法:
procedure OnAfterCreated(const browser: ICefBrowser); function DoClose(const browser: ICefBrowser): Boolean; procedure OnBeforeClose(const browser: ICefBrowser); function OnBeforePopup(const parentBrowser: ICefBrowser; const popupFeatures: PCefPopupFeatures; const windowName, url: ustring; const browserSettings: ICefBrowserSettings; out Result: Boolean; var popupBrowserSettings: ICefBrowserSettings; var client: ICefClient; const requestContext: ICefRequestContext): Boolean; procedure OnAfterCreated(const browser:ICefBrowser); procedure OnBeforeClose(const browser: ICefBrowser);
2、IRequestHandler
該接口用於處理瀏覽器請求事件,比如請求網頁或者Ajax請求等。具體來說,它包含9個方法:
function OnBeforeBrowse(const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; isRedirect: Boolean): Boolean; function GetDownloadHandler: ICefDownloadHandler; procedure OnPluginCrashed(const browser: ICefBrowser; const pluginPath: ustring); function OnResourceRedirect(const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; var newUrl: ustring): Boolean; function GetAuthCredentials(const browser: ICefBrowser; const frame: ICefFrame; isProxy:Boolean; const host: ustring; port: Integer; const realm, scheme: ustring; const callback: ICefAuthCallback): Boolean; function OnQuotaRequest(const browser: ICefBrowser; const originUrl: ustring; newSize: Int64; const callback: ICefRequestCallback): Boolean; procedure OnRenderProcessTerminated(const browser: ICefBrowser; status: TCefTerminationStatus); function OnProtocolExecution(const browser: ICefBrowser; const url: ustring): Boolean; procedure OnRenderThreadCreated(const browser:ICefBrowser);
3、IDownloadHandler
該接口用於處理瀏覽器下載事件,具體來說,它包含4個方法:
function ReceivedData(const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const data: Pointer; dataLength: NativeUInt): Boolean; procedure Complete(const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const fullPath: ustring); function GetAuthCredentials(const browser: ICefBrowser; const frame: ICefFrame; isProxy: Boolean; const host: ustring; port: Integer; const realm, scheme: ustring; const callback: ICefAuthCallback): Boolean; procedure Cancel;
三、示例代碼
以下是一個簡單的示例,演示了cef4delphi如何在Delphi應用程序中實現嵌入式瀏覽器功能:
program ChrDelphi;
uses
ceflib, cefgui,
{$IFDEF Windows} //windows平台
ceflibnative, ceflibnativeext, cefvcl, //vcl需要的單元
{$ENDIF}
forms, controls,
sysutils;
type
TBrowserForm = class(TForm)
Chromium1: TChromium;
procedure FormShow(Sender: TObject);
procedure Chromium1LoadEnd(Sender: TObject; const aBrowser: ICefBrowser; const aFrame: ICefFrame; aHttpStatus: Integer);
procedure Chromium1Close(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Closed: Boolean;
end;
var
BrowserForm: TBrowserForm;
{ TBrowserForm }
procedure TBrowserForm.Chromium1Close(Sender: TObject);
begin
Closed := True; //設置瀏覽器窗口關閉標識
Close; //關閉表單
end;
procedure TBrowserForm.Chromium1LoadEnd(Sender: TObject; const aBrowser: ICefBrowser; const aFrame: ICefFrame; aHttpStatus: Integer);
begin
Chromium1.ExecuteJavaScript('alert(''Haha, it works!'');', aFrame.Url, 0); //執行瀏覽器中的JavaScript
end;
procedure TBrowserForm.FormShow(Sender: TObject);
begin
Chromium1.CreateBrowserProcess; //創建瀏覽器進程
Chromium1.Load('http://www.baidu.com'); //加載網頁
end;
begin
BrowserForm := TBrowserForm.Create(nil);
try
BrowserForm.ShowModal; //顯示錶單
finally
BrowserForm.Free; //釋放表單
end;
end.
四、總結
通過本文的介紹,讀者可以了解cef4delphi在實現嵌入式瀏覽器方面的應用,並掌握如何監聽瀏覽器的不同事件。同時,這裡還提供了一個簡單的示例代碼,幫助讀者更好地理解cef4delphi的使用方式。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/186138.html
微信掃一掃
支付寶掃一掃