Как получить исходный код из компонента WebBrowser?
Я хочу получить исходный код активной страницы на компоненте WebBrowser и записать его в компонент Memo.
Спасибо.
Как получить исходный код из компонента WebBrowser?
Я хочу получить исходный код активной страницы на компоненте WebBrowser и записать его в компонент Memo.
Спасибо.
Вы можете использовать IPersistStreamInit интерфейс и сохранить метод для хранения содержимого веб-браузера в потоке.
Uses 
  ActiveX;
function GetWebBrowserHTML(const WebBrowser: TWebBrowser): String;
var
  LStream: TStringStream;
  Stream : IStream;
  LPersistStreamInit : IPersistStreamInit;
begin
  if not Assigned(WebBrowser.Document) then exit;
  LStream := TStringStream.Create('');
  try
    LPersistStreamInit := WebBrowser.Document as IPersistStreamInit;
    Stream := TStreamAdapter.Create(LStream,soReference);
    LPersistStreamInit.Save(Stream,true);
    result := LStream.DataString;
  finally
    LStream.Free();
  end;
end;
		Это тоже хорошо работает:
function GetHTML(w: TWebBrowser): String;
Var
  e: IHTMLElement;
begin
  Result := '';
  if Assigned(w.Document) then
  begin
     e := (w.Document as IHTMLDocument2).body;
     while e.parentElement <> nil do
     begin
       e := e.parentElement;
     end;
     Result := e.outerHTML;
  end;
end;
		Об этом много раз говорили и отвечали на форумах Embarcadero, где было опубликовано множество примеров кода. Поиск в архивах.
Суть его в том, что вы Navigate() до нужного URL-адреса и дождитесь, когда произойдет событие OnDocumentComplete, затем QueryInterface() свойство Document для интерфейса IPersistStreamInit и вызовите его метод save(), Создайте экземпляр объекта TStream, например TMemoryStream, оберните его в объект TStreamAdapter, а затем передайте адаптер в save(). Затем вы можете загрузить TStream в TMemo.