Код: Выделить всё
var
chrom:TChromium;
begin
chrom:=TChromium.Create(self);
chrom.Load(Edit1.Text);
end;
А как мне теперь в мемо получить исходный код загруженной страницы?
Модератор: Модераторы
Код: Выделить всё
var
chrom:TChromium;
begin
chrom:=TChromium.Create(self);
chrom.Load(Edit1.Text);
end;
arriah писал(а):А как мне теперь в мемо получить исходный код загруженной страницы?
Код: Выделить всё
var
chrom:TChromium;
begin
chrom:=TChromium.Create(self);
chrom.Load(Edit1.Text);
Memo1.Lines.LoadFromFile(Edit1.Text)
end;
скалогрыз писал(а):arriah писал(а):А как мне теперь в мемо получить исходный код загруженной страницы?
и не благодари:Код: Выделить всё
var
chrom:TChromium;
begin
chrom:=TChromium.Create(self);
chrom.Load(Edit1.Text);
Memo1.Lines.LoadFromFile(Edit1.Text)
end;
Код: Выделить всё
Memo1.Lines.Assign(chrom.MainFrame.Lines) Код: Выделить всё
procedure ShowSource(const Src: ustring);
begin
Form1.HTML := Src;
end;
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const Browser: ICefBrowser;
const Frame: ICefFrame; httpStatusCode: Integer);
begin
if (browser <> nil) and (browser.Identifier = Chromium1.BrowserId) and
((frame = nil) or (frame.IsMain))
then
Chromium1.Browser.MainFrame.GetSourceProc(@ShowSource);
end;
Chromium.Load(Edit1.text);
SynEdit1.Text:=HTML;
Код: Выделить всё
procedure ShowSource(const Src: ustring);
begin
Form1.HTML := Src;
SysEdit1.Text:=Src;
end;
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const Browser: ICefBrowser;
const Frame: ICefFrame; httpStatusCode: Integer);
begin
if (browser <> nil) and (browser.Identifier = Chromium1.BrowserId) and
((frame = nil) or (frame.IsMain))
then
Chromium1.Browser.MainFrame.GetSourceProc(@ShowSource);
end;
arriah писал(а):Но если бразузер создать через Chrom:=TChromium.Create, то по-моему даже chrom.load(url) не отрабатывает, то есть не подгружается страничка
arriah писал(а):Все это ради ого чтобы получить некий контент с сайтов, которые например, отдают его через яваскрипт. Поэтому и затеялся с хромом.
А можно ли используя синапсис получать исходный текс страницы, уже после того как там отработали все скрипты? Тогда и надобность бы в хроме отпала)) Надо лишь получить контент обработать его и вытащить лишь некоторые данные
скалогрыз писал(а):предположу, что не хватает Parent-а
Chrom.Parent:=Self;
скалогрыз писал(а):суровая правда жизни. CEF пока что твоя лучшая альтренатива
Снег Север писал(а):поэтому желательно очень точно воспроизвести пример и только потом, постепенно, изменять под себя.
The easiest way to create a new application using CEF is to start with the cefclient application and remove the parts that you don’t need. Many of the examples in this document originate from the cefclient application.
Код: Выделить всё
{$MACRO ON}
{$IFDEF WINDOWS}
{$DEFINE cconv:=stdcall}
{$ELSE}
{$DEFINE cconv:=cdecl}
{$ENDIF}
Код: Выделить всё
cef_initialize: function(const args: PCefMainArgs; const settings: PCefSettings; application: PCefApp;
windows_sandbox_info: Pointer): Integer; cconv;
Код: Выделить всё
cef_initialize: function(const args: PCefMainArgs; const settings: PCefSettings; application: PCefApp;
windows_sandbox_info: Pointer): Integer; cdecl;
скалогрыз писал(а):Пробовал на Винде распоследний fpcef3 со свежей сборкой (CEF 3.2704) - падает на cef_initialization() c AV.
Код: Выделить всё
Settings.accept_language_list := CefString(CefAcceptLanguageList);
Код: Выделить всё
Result.str := PChar16(PWideChar(str))
Код: Выделить всё
function CefString(const str: ustring): TCefString;
begin
Result.length := Length(str);
if Result.length>0
then Result.str := PChar16(PWideChar(str))
else Result.str := nil;
Result.dtor := nil;
end;
скалогрыз писал(а):ассинхроннае!
arriah писал(а):Парент прописал, но ничего не изменилось
Код: Выделить всё
procedure TMainform.FormCreate(Sender: TObject);
begin
{$INFO subprocess is set here, comment to use main program as subprocess}
CefBrowserSubprocessPath := '.' + PathDelim + 'subprocess'{$IFDEF WINDOWS}+'.exe'{$ENDIF};
Chromium:=TChromium.Create(Self);
Chromium.Parent:=Self;
Chromium.Align:=alBottom;
Chromium.Visible:=true;
Chromium.Height:=300;
Chromium.OnLoadEnd:=@ChromiumLoadEnd;
end;