Comment rendre un élément HTML sans utiliser de navigateur Web?

Est là une manière d'attirer HTML le contenu d'un élément sur une toile sans utilisation d'un contrôle de navigateur web ?

Avec ce code, je me suis rendu de l'élément de la forme de la toile (juste un exemple).
Il fonctionne bien, mais ce code n'est pas une bonne pratique - voir ci-dessous, pourquoi...

uses
  SHDocVw, MSHTML;

procedure TForm1.Button1Click(Sender: TObject);
var
  WebBrowser: TWebBrowser;
  HTMLElement: IHTMLElement;
  HTMLRenderer: IHTMLElementRender;
begin
  WebBrowser := TWebBrowser.Create(nil);
  try
    WebBrowser.ParentWindow := Application.Handle;
    WebBrowser.Navigate('https://stackoverflow.com/questions/2975586/good-delphi-blogs');

    while WebBrowser.ReadyState < READYSTATE_COMPLETE do
      Application.ProcessMessages;

    HTMLElement := (WebBrowser.Document as IHTMLDocument3).getElementById('question');
    HTMLRenderer := (HTMLElement as IHTMLElementRender);
    HTMLRenderer.DrawToDC(Canvas.Handle);

  finally
    HTMLElement := nil;
    HTMLRenderer := nil;
    WebBrowser.Free;
  end;
end;

C'est mauvais parce

  • il utilise le caché TWebBrowser de contrôle, mais je voudrais charger le document HTML directement par le biais de la IHTMLDocument de l'interface et la rendre certaines élément sur mon propre toile
  • si je créer et charger le IHTMLDocument manuellement par exemple de cette façon puis le moteur de rendu méthode IHTMLElementRender.DrawToDC n'est pas peindre quoi que ce soit (peut-être parce qu'il n'y a pas de toile pour le rendu du document)
  • encore pire, c'est que IHTMLElementRender.DrawToDC est obsolète en ce moment, donc je suis à la recherche d'une méthode alternative pour le rendu des éléments sur ma propre toile

Est-il propre façon de résoudre ce problème à l'aide de MSHTML ?

source d'informationauteur TLama