![]() |
TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Hi !
Ich habe vor einen kleinen Website Analyzer zu schreiben. Soll heissen man gibt die URL ein und per knopfdruck surft der WebBrowser auf die Seite und in einer ListBox sollen dann alle Items aufgelistet werden. Also so dinge wie InputFelder, Bilder, Links etc. Gibt es da vielleicht schon beim TWebBrowser von Haus aus so ein Feature ? Oder muss ich da von hand den Quellcode durchscannen ? Wenn ja, wie ? THX Gruß Assun |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Hallo,
ja, ![]() Hier mal ein kleines Beispiel:
Delphi-Quellcode:
var z,count : Integer;
begin with WebBrowser1 do begin count := OleObject.document.images.Length; for z := 0 to Count-1 do Memo1.Lines.Add(OleObject.document.images.Item(z).Src); end; |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Liste der Anhänge anzeigen (Anzahl: 1)
hab mal ein kleines sample angehängt, denn ich habe ein Problem.
Es klappt nich bei allen seiten !!!!!! denn auf Delphipraxis.net gehts zwar, nicht aber auf ![]() aber seht selbst unten im Anhang : |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Hallo,
Du arbeitest auf deiner Seite mit Frames, darum musst Du erst mit Hilfe von
Delphi-Quellcode:
und dann
OleObject.document.frames.length
Delphi-Quellcode:
alle Frames über eine Schleife durchgehen.
OleObject.document.frames.items(z)
In dieser Schleife dann die Images auslesen. In dem Fall dann:
Delphi-Quellcode:
Wenn frames.length = 0 ist hast Du keine Frames und kannst den Code wie gehabt nehmen.
OleObject.document.frames.item(z).document.images.item(z).Src
|
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Also irgendwie peil ich das nicht so richtig :oops:
wenn ich folgenden code verwende :
Delphi-Quellcode:
Bringt er mir beim ausführen den Error :"Nicht implementiert" :gruebel:
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant); var z,count : Integer; begin with WebBrowser1 do begin OleObject.document.frames.length; for z := 0 to Count-1 do OleObject.document.frames.items(z); Memo1.Lines.Add(OleObject.document.frames.item(z).document.images.item(z).Src); end; end; Was mache ich falsch ? |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Hallo,
Du musst zwei Schleifen verschachtelt ausführen, dafür brauchst Du zwei Zählvariablen und zwei Countvariablen. die Anzahl Frames hast Du ermittelt aber nicht Count zugewiesen. Hab gerade nicht viel Zeit( :sharkylinchen: ), hier mal etwas Pseudocode:
Code:
Versuchs mal umzusetzen, sonst melde Dich wieder. :)
Count_1 = Anzahl Frames im Document
Schleife_1 0 to Count_1 begin Count_2 = Anzahl Images im Frame-Document Schleife_2 0 to Count_2 begin Images auslesen end end |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Liste der Anhänge anzeigen (Anzahl: 2)
also ich habe den Code versucht umzusetzen :
Delphi-Quellcode:
beim compilieren bekomm ich zwar keinen Error, aber beim ausführen passiert wenn ich aud
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant); var z,z2,count1,count2 : Integer; begin with WebBrowser1 do begin count1 := OleObject.document.frames.length; for z := 0 to Count1-1 do begin Count2 := OleObject.document.frames.item(z).document.images.item(z).Src; for z2 := 0 to Count2-1 do Memo1.Lines.Add(OleObject.document.images.Item(z).Src); end; end; end; end. ![]() ![]() ![]() Und ich habe keine Ahnung wieso. Ich habe unten mal sowohl die EXE als auch den Source angehängt, in der Hoffnung, dass mir vllt jemand helfen kann ;-) |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Zitat:
|
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Folgender Code benötigt noch ein Treeview auf dem Formular:
Delphi-Quellcode:
procedure TFrmHTMLUpload.FillTreeView(WebBrowser: TWebBrowser);
var i,j, k :Integer; FormItem, Element, SubElement: OleVariant; root : TTreeNodes; child, child2, child3 : TTreeNode; s_type : string; begin root := TreeView1.Items; root.Clear; //count forms on document for I:=0 to WebBrowser.OleObject.Document.forms.Length -1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); if VariantIsObject(FormItem.Name) then child := root.AddChild(nil, 'Form'+IntToStr(i)+': '+FormItem.Name.Name) else child := root.AddChild(nil, 'Form'+IntToStr(i)+': '+FormItem.Name); child.ImageIndex := 3; For j:= 0 to FormItem.Length-1 do begin try Element := FormItem.Item(j); //when the fieldname is found, try to fill out child2 := root.AddChild(child, Element.Name+' = '+Element.Value); s_type := Element.Type; if s_type = 'submit' then child2.ImageIndex := 1 else if s_type = 'text' then child2.ImageIndex := 0 else if s_type = 'file' then child2.ImageIndex := 2 else if s_type = 'hidden' then child2.ImageIndex := 4 else if s_type = 'checkbox' then child2.ImageIndex := 5 else if s_type = 'radio' then child2.ImageIndex := 6 else if s_type = 'select-one' then child2.ImageIndex := 7 else child2.ImageIndex := -1; child3 := root.AddChild(child2, s_type); child3.ImageIndex := -1; if s_type = 'text' then begin child3 := root.AddChild(child2, 'MaxLen='+IntToStr(Element.maxLength)); child3.ImageIndex := -1; end else if s_type = 'select-one' then begin for k := 0 to Element.Options.Length-1 do begin SubElement := Element.Options.Item(k); child3 := root.AddChild(child2, SubElement.Text+ ' = <'+SubElement.Value+'>'); child3.ImageIndex := -1; end; // ShowMessage(IntToStr(Element.Options.Length)); end; if (s_type = 'hidden') then else ListBox1.Items.Add(Element.Name); except on E:Exception do root.AddChild(child, E.Message); end; end; end; if root.Count > 0 then root.GetFirstNode.Expand(True); end; |
Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Delphi-Quellcode:
da bringt er mir "undefinierter Bezeichner" obwohl ein TreeView namens TreeView1 existiert :gruebel:
root := TreeView1.Items;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16: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