AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi EmbeddedWB "angezeigten" Text kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

EmbeddedWB "angezeigten" Text kopieren

Ein Thema von Relicted · begonnen am 5. Dez 2008 · letzter Beitrag vom 4. Jan 2012
 
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: EmbeddedWB "angezeigten" Text kopieren

  Alt 5. Dez 2008, 09:45
Hallo

In meinem Mini Webbrowser Demo habe ich es mal so gemacht:

Delphi-Quellcode:
procedure WB_GetDocumentSourceToStream(Document: IDispatch; Stream: TStream);
// Save a TWebbrowser Document to a Stream
var
  PersistStreamInit: IPersistStreamInit;
  StreamAdapter: IStream;
begin
  Assert(Assigned(Document));
  Stream.Size := 0;
  Stream.Position := 0;
  if Document.QueryInterface(IPersistStreamInit,
    PersistStreamInit) = S_OK then
  begin
    StreamAdapter := TStreamAdapter.Create(Stream, soReference);
    PersistStreamInit.Save(StreamAdapter, False);
    StreamAdapter := nil;
  end;
end;

function WB_GetDocumentSourceToString(Document: IDispatch): string;
// Save a Webbrowser Document to a string
var
  Stream: TStringStream;
begin
  Result := '';
  Stream := TStringStream.Create('');
  try
    WB_GetDocumentSourceToStream(Document, Stream);
    Result := StringReplace(Stream.Datastring, #$A#9, #$D#$A, [rfReplaceAll]);
    Result := StringReplace(Result, #$A, #$D#$A, [rfReplaceAll]);
  finally
    Stream.Free;
  end;
end;


function WB_GetPlainText(WB: TWebbrowser; s: TStrings): string;
var
  IDoc: IHTMLDocument2;
  Strl: TStringList;
  sHTMLFile: string;
  v: Variant;
begin
  sHTMLFile := WB_GetDocumentSourceToString(WB.Document);
  Strl := TStringList.Create;
  try
    Strl.Add(sHTMLFile);
    Idoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
    try
      IDoc.designMode := 'on';
      while IDoc.readyState <> 'completedo Application.ProcessMessages;
      v := VarArrayCreate([0, 0], VarVariant);
      v[0] := Strl.Text;
      IDoc.write(PSafeArray(System.TVarData(v).VArray));
      IDoc.designMode := 'off';
      while IDoc.readyState <> 'completedo Application.ProcessMessages;
      s.Text := IDoc.body.innerText;
    finally
      IDoc := nil;
    end;
  finally
    Strl.Free;
  end;
end;


Ohne Webbrowser (mit und Indy TidHTTP) könntest du es so machen:

Delphi-Quellcode:
uses
  MSHTML, ActiveX, ComObj;

procedure WB_GetPlainText(AURL: string): string;
var
  IDoc: IHTMLDocument2;
  Strl: TStringList;
  v: Variant;
  i: Integer;
begin
  Result := '';
  Strl := TStringList.Create;
  try
    Strl.Text := idHTTP1.Get(AURL);
    Idoc := CreateComObject(Class_HTMLDocument) as IHTMLDocument2;
    try
      IDoc.designMode := 'on';
      while IDoc.readyState <> 'completedo
        Application.ProcessMessages;
      v := VarArrayCreate([0, 0], VarVariant);
      v[0] := Strl.Text;
      IDoc.write(PSafeArray(System.TVarData(v).VArray));
      IDoc.designMode := 'off';
      while IDoc.readyState <> 'completedo
        Application.ProcessMessages;
      Result := IDoc.body.innerText;
    finally
      IDoc := nil;
    end;
  finally
    Strl.Free;
  end;
end;
Thomas
  Mit Zitat antworten Zitat
 


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 04:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz