Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebBrowser-htmlCode nach IE7-Install nicht mehr auslesbar? (https://www.delphipraxis.net/82313-twebbrowser-htmlcode-nach-ie7-install-nicht-mehr-auslesbar.html)

TStringlist 11. Dez 2006 09:19


TWebBrowser-htmlCode nach IE7-Install nicht mehr auslesbar?
 
nur mal so am Rande...

Es geht um diesen Code mittels dem (über das IPersistStreamInit) der HTML-Quellcode aus einer TWebBrowser-Komponente ausgelesen werden kann. Täusche ich mich, oder funktioniert der Code nach einer IE7-Installation tatsächlich nicht mehr? (Auf einem älteren PC mit IE6 lief er jedenfalls immer ohne Probleme).

Ist da diesbezüglich schon was bekannt? ...event. auch, wie der Code dann umzuschreiben wäre, und zwar möglichst so, dass er anschließend mit beiden Explorer-Versionen, dem IE6 u. dem IE7, funktioniert?

mfg

marabu 11. Dez 2006 09:57

Re: TWebBrowser-htmlCode nach IE7-Install nicht mehr auslesb
 
Hallo,

zuerst bin ich beim Lesen deines Beitrags leicht erschrocken, aber dann hat die Vernunft doch noch gesiegt: Ich müsste schon Rückmeldungen von meinen Kunden erhalten haben, wenn mein Code seit Umstellung auf IE7 nicht mehr funktionieren würde. Nur wegen eines kleinen Restes Paranoia habe ich meine eigenen Funktionen schnell noch mal getestet - und sie funktionieren noch. Der Code von Thomas verwendet die gleichen Schnittstellen und sollte auch weiterhin funktionieren. Eventuell solltest du mal auf einer anderen Maschine testen. Vielleicht ist deine Installation beschädigt?

Freundliche Grüße

Bernhard Geyer 11. Dez 2006 10:02

Re: TWebBrowser-htmlCode nach IE7-Install nicht mehr auslesb
 
Wann liest du den Code aus? ist wirklich schon das Dokument geladen under DOM aufgebaut?

TStringlist 11. Dez 2006 10:45

Re: TWebBrowser-htmlCode nach IE7-Install nicht mehr auslesb
 
@marabu, das Programm läuft auf meinem alten PC ohne Problem. Habe noch ein weiteres XP und W2k auf dem jetzigen installiert, beide ebenfalls noch mit dem alten IE6, da läuft das Prog auch ohne Schwierigkeiten. Den IE7 hatte ich schon vor ca. 6 Wochen installiert. Letzte Woche hat sich mir dann eine nochmalige automatische Neu-Installation des IE7 quasi aufgedrängt und da mein bisheriger IE7 noch nicht die aller aller letzte Version war, habe ich das auch nochmal durchführen lassen, mit DeInstallation des bisherigen IE7... Vielleicht ist ja das diesbezügliche Procedere noch nicht ganz ausgereift und dabei was schiefgegangen(?)...


@Bernhard, das Auslesen über das DOM (bzw. IHTMLKocument2 u. document.body.innerHTML) funktioniert ja. Nur die Methode über das IPersistStreamInit nicht.

Sicherheitshalber habe ich natürlich auch dieses ReadyState vor dem Func-Aufruf erst noch mal befragt:

Delphi-Quellcode:
while WebBrowser1.ReadyState < ReadyState_Interactive do Application.ProcessMessages;
RichEdit3.Lines.Text := getBrowserHTML(WebBrowser1);
aber leider ohne Erfolg.

shmia 11. Dez 2006 18:16

Re: TWebBrowser-htmlCode nach IE7-Install nicht mehr auslesb
 
Vielleicht möchtest du ja mal folgenden Code testen.
Ich verwende auch das Interface IPersistStreamInit; aber etwas anderst.
Man könnte übrigens auch das (ältere) Interface IPersistStream benützen; es hat (mit einer Ausnahme) die gleichen Methoden.
Delphi-Quellcode:
procedure Document_SetHTML(Document: IDispatch; const HTMLCode: string);
var
  ms: TStringStream;
begin
   if Assigned(Document) then
   begin
      ms := TStringStream.Create(HTMLCode);
      try
         ms.Seek(0, 0);
         OleCheck((Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)));
      finally
         ms.Free;
      end;
   end;
end;

function Document_GetHTML(Document: IDispatch):string;
var
   ms: TStringStream;
begin
   Result := '';
   if Assigned(Document) then
   begin
      ms := TStringStream.Create(Result);
      try
         OleCheck((Document as IPersistStreamInit).Save(TStreamAdapter.Create(ms),False));
         Result := ms.DataString;
      finally
         ms.Free;
      end;
   end;
end;



procedure WB_SetHTML(WebBrowser: TWebBrowser; const HTMLCode: string);
begin
   if not Assigned(WebBrowser.Document) then
      WebBrowser.Navigate('about:blank');
   while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
      Application.ProcessMessages;

   Document_SetHTML(WebBrowser.Document, HTMLCode);
end;

function WB_GetHTML(WebBrowser: TWebBrowser): string;
begin
   Result := Document_GetHTML(WebBrowser.Document);
end;

TStringlist 11. Dez 2006 19:50

Re: TWebBrowser-htmlCode nach IE7-Install nicht mehr auslesb
 
@shmia, thx für deinen Test-Code. Ich habe ihn erst mit IPersistStreamInit und danach nochmal mit nur dem IPersistStream ausprobiert, leider aber jedesmal nur eine Exception zurückbekommen. Zuerst eine der Klasse EOleSysError mit der Meldung 'Das System kann die angegebene Datei nicht finden' und danach eine der Klasse EIntfCastError mit der Meldung 'Interface nicht unterstützt'.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 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