You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-06-12 22:07:39 +02:00
The JSExtensionWithFunction demo now sends a text message back to the main process
This commit is contained in:
@ -56,11 +56,26 @@ object JSExtensionWithFunctionFrm: TJSExtensionWithFunctionFrm
|
|||||||
Left = 0
|
Left = 0
|
||||||
Top = 30
|
Top = 30
|
||||||
Width = 978
|
Width = 978
|
||||||
Height = 559
|
Height = 540
|
||||||
Align = alClient
|
Align = alClient
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
|
ExplicitHeight = 559
|
||||||
|
end
|
||||||
|
object StatusBar1: TStatusBar
|
||||||
|
Left = 0
|
||||||
|
Top = 570
|
||||||
|
Width = 978
|
||||||
|
Height = 19
|
||||||
|
Panels = <
|
||||||
|
item
|
||||||
|
Width = 500
|
||||||
|
end>
|
||||||
|
ExplicitLeft = 336
|
||||||
|
ExplicitTop = 544
|
||||||
|
ExplicitWidth = 0
|
||||||
end
|
end
|
||||||
object Chromium1: TChromium
|
object Chromium1: TChromium
|
||||||
|
OnProcessMessageReceived = Chromium1ProcessMessageReceived
|
||||||
OnBeforePopup = Chromium1BeforePopup
|
OnBeforePopup = Chromium1BeforePopup
|
||||||
OnAfterCreated = Chromium1AfterCreated
|
OnAfterCreated = Chromium1AfterCreated
|
||||||
Left = 32
|
Left = 32
|
||||||
|
@ -59,6 +59,7 @@ type
|
|||||||
CEFWindowParent1: TCEFWindowParent;
|
CEFWindowParent1: TCEFWindowParent;
|
||||||
Chromium1: TChromium;
|
Chromium1: TChromium;
|
||||||
Timer1: TTimer;
|
Timer1: TTimer;
|
||||||
|
StatusBar1: TStatusBar;
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure GoBtnClick(Sender: TObject);
|
procedure GoBtnClick(Sender: TObject);
|
||||||
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
||||||
@ -70,6 +71,9 @@ type
|
|||||||
var popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo;
|
var popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo;
|
||||||
var client: ICefClient; var settings: TCefBrowserSettings;
|
var client: ICefClient; var settings: TCefBrowserSettings;
|
||||||
var noJavascriptAccess: Boolean; out Result: Boolean);
|
var noJavascriptAccess: Boolean; out Result: Boolean);
|
||||||
|
procedure Chromium1ProcessMessageReceived(Sender: TObject;
|
||||||
|
const browser: ICefBrowser; sourceProcess: TCefProcessId;
|
||||||
|
const message: ICefProcessMessage; out Result: Boolean);
|
||||||
protected
|
protected
|
||||||
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
||||||
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
|
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
|
||||||
@ -143,6 +147,18 @@ begin
|
|||||||
Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]);
|
Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TJSExtensionWithFunctionFrm.Chromium1ProcessMessageReceived(
|
||||||
|
Sender: TObject; const browser: ICefBrowser;
|
||||||
|
sourceProcess: TCefProcessId; const message: ICefProcessMessage;
|
||||||
|
out Result: Boolean);
|
||||||
|
begin
|
||||||
|
if (message.Name = TEST_MESSAGE_NAME) then
|
||||||
|
begin
|
||||||
|
StatusBar1.Panels[0].Text := DateTimeToStr(now) + ' - ' + message.ArgumentList.GetString(0); // this doesn't create/destroy components
|
||||||
|
Result := True;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TJSExtensionWithFunctionFrm.FormShow(Sender: TObject);
|
procedure TJSExtensionWithFunctionFrm.FormShow(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
// GlobalCEFApp.GlobalContextInitialized has to be TRUE before creating any browser
|
// GlobalCEFApp.GlobalContextInitialized has to be TRUE before creating any browser
|
||||||
|
@ -42,7 +42,10 @@ unit uMyV8Handler;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
uCEFTypes, uCEFInterfaces, uCEFv8Value, uCEFv8Handler;
|
uCEFTypes, uCEFInterfaces, uCEFv8Value, uCEFProcessMessage, uCEFv8Handler, uCEFv8Context;
|
||||||
|
|
||||||
|
const
|
||||||
|
TEST_MESSAGE_NAME = 'test_message';
|
||||||
|
|
||||||
type
|
type
|
||||||
TMyV8Handler = class(TCefv8HandlerOwn)
|
TMyV8Handler = class(TCefv8HandlerOwn)
|
||||||
@ -57,9 +60,15 @@ function TMyV8Handler.Execute(const name : ustring;
|
|||||||
const arguments : TCefv8ValueArray;
|
const arguments : TCefv8ValueArray;
|
||||||
var retval : ICefv8Value;
|
var retval : ICefv8Value;
|
||||||
var exception : ustring): Boolean;
|
var exception : ustring): Boolean;
|
||||||
|
var
|
||||||
|
msg: ICefProcessMessage;
|
||||||
begin
|
begin
|
||||||
if (name = 'myfunc') then
|
if (name = 'myfunc') then
|
||||||
begin
|
begin
|
||||||
|
msg := TCefProcessMessageRef.New(TEST_MESSAGE_NAME);
|
||||||
|
msg.ArgumentList.SetString(0, 'Message received!');
|
||||||
|
TCefv8ContextRef.Current.Browser.SendProcessMessage(PID_BROWSER, msg);
|
||||||
|
|
||||||
retval := TCefv8ValueRef.NewString('My Value!');
|
retval := TCefv8ValueRef.NewString('My Value!');
|
||||||
Result := True;
|
Result := True;
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user