![]() |
"Feature not implemented" bei der Analyse via MSHTML unter Win7
Ich verwende folgenden Code um die Tags eines TWebBrowsers zu ermitteln:
Delphi-Quellcode:
Dieses Verfahren funktioniert unter Windows XP mit dem IE 8 sehr gut. Unter Windows 7 mit dem IE 9 allerdings kommt es in der Zeile " b := a.item(null, 0);" zu einer EOleException mit der Meldung "Nicht implementiert". Gibt es da eine einfache Lösung dies zu umgehen? Möglichst so, das es auf beiden System klappt?
var
Document: IHTMLDocument2; Tags: IHTMLElementCollection; Tag: IHTMLElement; Body: IHTMLElement2; a : IHTMLElementCollection; b : IInterface; begin // Switch off scrollbars WebBrowser1.OleObject.document.body.style.overflowX := 'hidden'; WebBrowser1.OleObject.document.body.style.overflowY := 'hidden'; // Switch off borders WebBrowser1.OleObject.document.body.style.borderstyle := 'none'; // Check for valid document: require IHTMLDocument2 interface to it if not Supports(WebBrowser1.OleObject.document, IHTMLDocument2, Document) then raise Exception.Create('Invalid HTML document'); // Check for valid body element: require IHTMLElement2 interface to it a := IHTMLElementCollection(Document.all.tags('head')); b := a.item(null, 0); if not Supports(b, IHTMLElement2, Body) then raise Exception.Create('Can''t find <body> element'); Tags := Body.getElementsByTagName('meta'); // Scan through all tags in body for I := 0 to Pred(Tags.length) do begin Tag := Tags.item(I, EmptyParam) as IHTMLElement; if AnsiSameText(Tag.getAttribute('name', 0), 'zzz') then ... |
AW: "Feature not implemented" bei der Analyse via MSHTML unter Win7
Ich kenne mich mit dem Thema nicht aus, aber nach der
![]()
Delphi-Quellcode:
zu verwenden:
nil
Zitat:
|
AW: "Feature not implemented" bei der Analyse via MSHTML unter Win7
Ja, leider mit dem gleichen Ergebnis.
|
AW: "Feature not implemented" bei der Analyse via MSHTML unter Win7
Delphi-Quellcode:
Die Funktion tags liefert ein IDispatch- und kein IHTMLElementCollection-Interface. Deshalb geht ein harter Cast an dieser Stelle schief und der Versuch, die Funktion item aufzurufen, wird mit der korrekten Fehlermeldung quittiert, da IDispatch tatsächlich keine Funktion item unterstützt.
a := IHTMLElementCollection(Document.all.tags('head'));
[...] Besser wäre:
Delphi-Quellcode:
var
i: IDispatch; [...] begin [...] i := Document.all.tags('head'); if not Supports(i, IHTMLElementCollection, a) then raise Exception.Create('Keine HTMLElementCollection'); b := a.item(null, 0); [...] end; |
AW: "Feature not implemented" bei der Analyse via MSHTML unter Win7
Delphi-Quellcode:
a := Document.all.tags('head') as IHTMLElementCollection;
Ging inzwischen das AS nicht auch bei Interfaces? (in "neueren" Delphis) (Da würde dann der Compiler das Supports intern versteckt aufrufen) |
AW: "Feature not implemented" bei der Analyse via MSHTML unter Win7
Ja, das würde hier auch gehen - mit der kleinen Einschränkung, daß dann nicht mehr ausgewählt werden kann, welche Exception im Fehlerfall erzeugt wird.
|
AW: "Feature not implemented" bei der Analyse via MSHTML unter Win7
Hat funktioniert, vielen Dank :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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