- Код: Выделить всё
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;
Сейчас этот форум просматривают: Google Adsense [Bot] и гости: 84