Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: TWebBrowser-Komponente -> kompletter Quelltext

  Alt 12. Nov 2004, 05:15
Zitat von BlueBong:
Sorry hab das ganze vielleicht etwas falsch beschrieben.

Ich möchte dann schon, dass es in eine Variable geschoben wird.
Hi,

Mit etwas Fantasie hättest du das selber bekommen

Zitat:
in diesem Thema wird fast ganz unten eine funktionierende Möglichkeit beschrieben.
Da der Code dort nicht so optimal ist, poste ich mal meinen Code:

Delphi-Quellcode:
uses
  ActiveX;

procedure WB_GetDocumentSourceToStream(Document: IDispatch; Stream: TStream);
// Speichert ein Webbrowser Document in einen Stream
var
   PersistStreamInit: IPersistStreamInit;
   StreamAdapter: IStream;
begin
   // Überprüfen, ob Dokument verfügbar ist
   Assert(Assigned(Document));
   // Inhalt des Streams löschen
   Stream.Size:= 0;
   Stream.Position:= 0;
   // IPersistStreamInit - Interface des Dokuments besorgen
   if Document.QueryInterface(IPersistStreamInit,
     PersistStreamInit) = S_OK then
   begin
     // Verwende Stream-Adapter, um IStream Interface zu unserem
     // Stream zu bekommen
     StreamAdapter:= TStreamAdapter.Create(Stream, soReference);
     // Speichere Daten aus dem Dokument in den Stream
     PersistStreamInit.Save(StreamAdapter, False);
     // Streamadapter explizit zerstören
     // (optional, würde sowieso passieren, wenn
     // Routine verlassen wird)
     StreamAdapter:= nil;
   end;
end;

function WB_GetDocumentSourceToString(Document: IDispatch): string;
// Speichert ein Webbrowser Document in einen string
var
  Stream: TStringStream;
begin
  Result := '';
  Stream := TStringStream.Create('');
  try
    WB_GetDocumentSourceToStream(Document, Stream);
    Result := Stream.Datastring;
  finally
    Stream.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // zu Seite navigieren
  WebBrowser1.Navigate('www.google.com');
  // Warten, bis Seite fertig geladen ist
  while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
    Application.ProcessMessages;
  // Source Code von Seite in Memo1 anzeigen lassen
  Memo1.Text := WB_GetDocumentSourceToString(WebBrowser1.Document);
end;
Thomas
  Mit Zitat antworten Zitat