browser.SendProcessMessage do not run

Having problems with building or using CEF's C/C++ APIs? This forum is here to help. Please do not post bug reports or feature requests here.

browser.SendProcessMessage do not run

Postby devao » Thu Nov 24, 2016 2:59 am

hi
i create a CEF component in a delphi form with code like this :
Code: Select all
unit frmchr;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cefvcl, ceflib, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB,
  ExtCtrls, StdCtrls;
type
  TFormChr = class(TForm)
    pnl1: TPanel;
    btntest: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btntestClick(Sender: TObject);
  private
    chromium : TChromium;
  public
  end;
var
  FormChr: TFormChr;
implementation
{$R *.dfm}
procedure TFormChr.FormCreate(Sender: TObject);
var     i: integer;
mycontrol: TChromium;
begin
if Assigned(chromium) then
  chromium.Free;
chromium := TChromium.Create(pnl1);
chromium.Parent := pnl1;
chromium.Align := alClient;
chromium.Width := pnl1.Width;
chromium.Height := pnl1.Height;
chromium.DefaultUrl := 'http://www.useragentstring.com/';
chromium.Visible := True;
end;


when i run the form all is ok, but when i send a message (to visit dom) it seems that the Chromium component do not receive; nothing is happening

i have add the code following :
Code: Select all
...
type TCustomRenderProcessHandler = class(TCefRenderProcessHandlerOwn)
     protected
       function OnProcessMessageReceived(const browser: ICefBrowser;sourceProcess: TCefProcessId; const message: ICefProcessMessage): Boolean; override;
end;
...
procedure CallBackVisitDomProc(const doc: ICefDomDocument);
begin
  ShowMessage('Hi');
end;
function TCustomRenderProcessHandler.OnProcessMessageReceived(
      const browser: ICefBrowser; sourceProcess: TCefProcessId;
      const message: ICefProcessMessage): Boolean;
begin
  if (message.Name = 'visitdom') then browser.MainFrame.VisitDomProc(CallBackVisitDomProc);
  Result := True;
end;
procedure TFormChr.btntestClick(Sender: TObject);
var resBool:Boolean;
    targetProcess: TCefProcessId;
    message: ICefProcessMessage;
    mesg:TWndMethod;
begin
  targetProcess := PID_RENDERER;
  message := TCefProcessMessageRef.New('visitdom'); 
  resBool := chromium.browser.SendProcessMessage(targetProcess,message);
end;
initialization
  CefRenderProcessHandler := TCustomRenderProcessHandler.Create;
end.
end.



Have you an idea ?
Thanks
devao
Newbie
 
Posts: 2
Joined: Fri Nov 04, 2016 3:17 am

Re: browser.SendProcessMessage do not run

Postby Czarek » Thu Nov 24, 2016 3:50 am

Maintainer of the CEF Python, PHP Desktop and CEF C API projects. My LinkedIn.
User avatar
Czarek
Virtuoso
 
Posts: 1927
Joined: Sun Nov 06, 2011 2:12 am


Return to Support Forum

Who is online

Users browsing this forum: Google [Bot] and 80 guests