![]() |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Zitat:
Hier musst du einfach selbstständig etwas Forschungsarbeit in der OH leisten. |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Mist. ich hab doch kein Plan von dem scheiss ;-)
kann man meinen falschen Code oben nicht einfach korrigieren ? |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Hallo,
hab mal deinen Code überarbeitet. Die falschen Zeilen sind auskommentiert, neue durch //neu gekennzeichnet. In einem Post zuvor hatte ich geschrieben : "Wenn frames.length = 0 ist hast Du keine Frames ", deshalb der Bereich mit den neuen Zeilen.
Delphi-Quellcode:
getestet u.a. mit:
var z,z2,count1,count2 : Integer;
begin with WebBrowser1 do begin count1 := OleObject.document.frames.length; if count1 = 0 then//keine frames //neu begin //neu count1 := OleObject.document.images.length; //neu * for z := 0 to Count1-1 do //neu Memo1.Lines.Add(OleObject.document.images.Item(z).Src); //neu end //neu else //neu for z := 0 to Count1-1 do begin //Count2 := OleObject.document.frames.item(z).document.images.item(z).Src; Count2 := OleObject.document.frames.item(z).document.images.length; //neu for z2 := 0 to Count2-1 do //Memo1.Lines.Add(OleObject.document.images.Item(z).Src); Memo1.Lines.Add(OleObject.document.frames.item(z).document.images.item(z2).Src);//neu end; end; ohne Frames = ![]() mit Frames = ![]() Deine Web-Seite erzeugt bei mir auch die Fehlermeldung "Zugriff verweigert", die Ursache wird in deinen Seiten liegen, da ich so ca 10 andere mit dem Code getestet hab. //Edit: Wenn jemand den Grund kennt, oder eine Lösung hat, wäre schön. //Edit2: den Code von shmia konnte ich nicht testen, da mein Delphi die Funktion VariantIsObject nicht kennt und Google auch nicht. //Edit3: Zeile mit //neu * eingefügt |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Zitat:
VariantIsObject ist eine kleine, nützliche Hilfsfunktion, die prüft, ob in einem OleVariant ein Dispatch-Interface steckt.
Delphi-Quellcode:
function VariantIsObject(const value:OleVariant):boolean;
begin result := (VarType(value) = varDispatch); end; |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Zitat:
Der Code von shmia funktioniert gut und liest alle Elemente aus dem Tag <FORMS> aus, berücksichtigt aber keine Frames. Damit kann die Zugriffsverweigerung des IE/Webbrowsers leider auch nicht umgangen werden. Im Zusammenhang mit Frames habe ich festgestellt das OleObject.document.frames.length auch den Tag <iframe> berücksichtigt :wall: Also wären folgende Situationen abzufangen: - Framesets - verschachtelte Framesets - Seite incl. IFrame - Seite incl. IFrame in einem Frame - IFrame innerhalb eines IFrame :gruebel: also rekursiv Bei der Seite ![]() 1. Auslesen der Adresse der Seite die im Frame angezeigt wird 2. Laden der Seite im WebBrowser 3. auslesen der Images wie gehabt
Delphi-Quellcode:
ist aber keine Ideal-Lösung.
...
sFrameName := WebBrowser1.OleObject.Document.all.tags('FRAME').Item(0).getattribute('src',0); Webbrowser.Navigate(sFrameName); ... |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Hi folks,
für den Fall, dass dieses Problem noch nicht ganz gelöst ist, möchte ich euch noch diesen Hinweis geben: ![]() Grüße vom marabu |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Hallo,
@marabu kann der WebBrowser nicht :( Fehlermeldung:
Code:
Die Methode 'Window' wird vom Automationsobjekt nicht unterstützt.
|
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Zitat:
Delphi-Quellcode:
Grüße vom marabu
procedure TWebForm.FramesButtonClick(Sender: TObject);
var win: IHTMLWindow2; doc: IHTMLDocument2; fc: IHTMLFramesCollection2; begin doc := WebBrowser.Document as IHTMLDocument2; win := doc.parentWindow; fc := win.frames; ShowMessage(Format('%d frames found', [fc.length])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 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