Hallo Patti,
vielen Dank für Deine Antwort, die mir schon sehr weitergeholfen hat.
Ich lese nun also die aus dem Internet geladene Seite ein:
Delphi-Quellcode:
function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
var
ps: IPersistStreamInit;
ss: TStringStream;
sa: IStream;
s: string;
begin
ps := WebBrowser.Document as IPersistStreamInit;
s := '';
ss := TStringStream.Create(s);
try
sa := TStreamAdapter.Create(ss, soReference) as IStream;
Result := Succeeded(ps.Save(sa, True));
if Result then ACode.Add(ss.Datastring);
finally
ss.Free;
end;
end;
Dann bearbeite ich den
HTML-Code mit PosEx und lade den geänderten Code wieder in den Browser:
Delphi-Quellcode:
procedure WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string; Ziel: string);
var
sl: TStringList;
ms: TMemoryStream;
begin
WebBrowser.Navigate(Ziel) ;
while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
Application.ProcessMessages;
if Assigned(WebBrowser.Document) then
begin
sl := TStringList.Create;
try
ms := TMemoryStream.Create;
try
sl.Text := HTMLCode;
sl.SaveToStream(ms) ;
ms.Seek(0, 0) ;
(WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
finally
ms.Free;
end;
finally
sl.Free;
end;
end;
end;
Dabei gehen natürlich die Verweise zu den anderen Dateien verloren. Die von Dir vorgeschlagene Variante das Basis-Verzeichnis zu ändern, habe ich jetzt noch nicht probiert, aber das ist für mein Vorhaben auch nicht wirklich praktikabel. Hast Du die Problematik mit den internen Links lösen können (Sicherheitseinstellung IE)?
Und eine andere Möglichkeit statischen
HTML-Code einzubetten existiert nicht?
Schönen Gruß
HS