一、簡介
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-tw/n/186138.html