AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Webbrowser html code ziehen aber aus richtigem Frame
Thema durchsuchen
Ansicht
Themen-Optionen

Webbrowser html code ziehen aber aus richtigem Frame

Offene Frage von "Andi1982ka"
Ein Thema von Andi1982ka · begonnen am 8. Apr 2006 · letzter Beitrag vom 27. Mai 2006
Antwort Antwort
Andi1982ka

Registriert seit: 22. Mär 2006
Ort: Karlsruhe
12 Beiträge
 
#1

Webbrowser html code ziehen aber aus richtigem Frame

  Alt 8. Apr 2006, 16:06
Hallo,

ich benutze folgende Funktion um mir den HTML-Code aus dem TWebBrowser zu ziehen:

Delphi-Quellcode:
function TForm1.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;
Allerdings habe ich bei seiten mit frames dann nur den Code des Framesets! Kann ich in dieser zeile

ps := WebBrowser.Document as IPersistStreamInit; nicht irgendwie Sagen dass er den Code des Frames "MAIN" ziehen soll?

Vielen Dank schonmal,

Gruß Andi
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Webbrowser html code ziehen aber aus richtigem Frame

  Alt 8. Apr 2006, 17:30
Hallo Andi,

solange keine Frames im Spiel sind, ist dein Ansatz tragbar. Bei Frames ist der WebBrowser nur noch der Lieferant des Manteldokuments und dieses muss auf seine Frames hin untersucht werden. Jeder Frame hat ein zugehöriges Window und dieses liefert dir dann das Document. Natürlich könntest du die eine Zeile durch ein Code-Ungetüm ersetzen, aber mir gefällt es besser, wenn die Gesamtfunktionalität in kleinere Blöcke zerlegt wird, die man auch unabhängig voneinander verwenden kann.

Ich verwende GetFrameDoc() um auf einen bestimmten Frame eines FrameSet zuzugreifen:

Delphi-Quellcode:
function GetFrameDoc(doc: IHTMLDocument2; v: OleVariant): IHTMLDocument2;
var
  win: IHTMLWindow2;
  u: IUnknown;
  ec: IHTMLElementCollection;
begin
  u := doc.frames.item(v);
  if Assigned(u)
  and Succeeded(u.QueryInterface(IHTMLWindow2, win))
    then Result := win.Document
    else Result := nil;
end;
Den HTML-Code des so ermittelten Document besorge ich mir dann mit DocToStrings():

Delphi-Quellcode:
function DocToStrings(doc: IDispatch; s: TStrings): Boolean;
var
  ps: IPersistStreamInit;
  sa: IStream;
  ms: TStream;
begin
  if Succeeded(doc.QueryInterface(IPersistStreamInit, ps)) then
  begin
    ms := TMemoryStream.Create;
    sa := TStreamAdapter.Create(ms, soReference) as IStream;
    Result := Succeeded(ps.Save(sa, true));
    ms.Position := 0;
    s.LoadFromStream(ms);
    ms.Free;
  end;
end;
Und aufgerufen wird das Ganze dann etwa so:

Delphi-Quellcode:
procedure TDemoForm.ExtractButtonClick(Sender: TObject);
var
  doc: IHTMLDocument2;
  s: TStrings;
begin
  doc := GetFrameDoc(WebBrowser.Document as IHTMLDocument2, 'MAIN');
  if Assigned(doc) then
  begin
    s := TStringList.Create;
    if DocToStrings(doc, s)
      then ShowMessage(s.Text)
      else ShowMessage('Rats!');
    s.Free;
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Andi1982ka

Registriert seit: 22. Mär 2006
Ort: Karlsruhe
12 Beiträge
 
#3

Re: Webbrowser html code ziehen aber aus richtigem Frame

  Alt 8. Apr 2006, 19:16
Hey,

funktioniert wunderbar! Vielen Dank!!!!

Gruß andi
  Mit Zitat antworten Zitat
Benutzerbild von jamma-markus
jamma-markus

Registriert seit: 16. Okt 2004
Ort: Kempen
58 Beiträge
 
#4

Re: Webbrowser html code ziehen aber aus richtigem Frame

  Alt 27. Mai 2006, 13:32
kann das ganze nicht auch so gehen?
memo2.Lines.Text := (WebBrowser1.Document as IHTMLDocument2).frames.item('MAIN').body.innerHTML;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Webbrowser html code ziehen aber aus richtigem Frame

  Alt 27. Mai 2006, 13:59
Hast du es ausprobiert?

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von jamma-markus
jamma-markus

Registriert seit: 16. Okt 2004
Ort: Kempen
58 Beiträge
 
#6

Re: Webbrowser html code ziehen aber aus richtigem Frame

  Alt 27. Mai 2006, 15:21
nein. denn wenn du das ließt, weißt du auch, warum nicht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz