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;