AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebBrowser : Alle Input Felder, Bilder etc. auflisten
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser : Alle Input Felder, Bilder etc. auflisten

Ein Thema von Assun · begonnen am 2. Aug 2005 · letzter Beitrag vom 7. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#1

TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 2. Aug 2005, 12:50
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
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#2

Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 2. Aug 2005, 13:06
Hallo,

ja, Document Object Model ist das Stichwort.
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;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#3

Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 2. Aug 2005, 14:52
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 http://assun.de

aber seht selbst unten im Anhang :
Angehängte Dateien
Dateityp: exe project1_145.exe (440,0 KB, 42x aufgerufen)
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 2. Aug 2005, 16:09
Hallo,

Du arbeitest auf deiner Seite mit Frames, darum musst Du erst mit Hilfe von
OleObject.document.frames.length und dann
OleObject.document.frames.items(z) alle Frames über eine Schleife durchgehen.
In dieser Schleife dann die Images auslesen.
In dem Fall dann:
OleObject.document.frames.item(z).document.images.item(z).Src Wenn frames.length = 0 ist hast Du keine Frames und kannst den Code wie gehabt nehmen.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#5

Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 2. Aug 2005, 17:23
Also irgendwie peil ich das nicht so richtig

wenn ich folgenden code verwende :

Delphi-Quellcode:
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;
Bringt er mir beim ausführen den Error :"Nicht implementiert"

Was mache ich falsch ?
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 2. Aug 2005, 21:25
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( ), hier mal etwas Pseudocode:
Code:
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
Versuchs mal umzusetzen, sonst melde Dich wieder.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#7

Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 4. Aug 2005, 16:51
also ich habe den Code versucht umzusetzen :

Delphi-Quellcode:
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.
beim compilieren bekomm ich zwar keinen Error, aber beim ausführen passiert wenn ich aud http://delphi-Praxis.net navigiere gar nix und bei http://Assun.de kommt dieser Error :

http://home.arcor.de/assun/error.JPG

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
Angehängte Dateien
Dateityp: zip webalyzer_504.zip (10,1 KB, 18x aufgerufen)
Dateityp: exe project1_178.exe (449,0 KB, 22x aufgerufen)
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 4. Aug 2005, 16:59
Zitat von Assun:
also ich habe den Code versucht umzusetzen :

Delphi-Quellcode:
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.
beim compilieren bekomm ich zwar keinen Error, aber beim ausführen passiert wenn ich aud http://delphi-Praxis.net navigiere gar nix und bei http://Assun.de kommt dieser Error :

http://home.arcor.de/assun/error.JPG

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
Wenn Du in Deinen Frames Cross-Site Scripting verwendest, weigert sich der IE Dir Zugriff darauf zu geben.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 4. Aug 2005, 16:59
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 = 'submitthen
            child2.ImageIndex := 1
         else if s_type = 'textthen
            child2.ImageIndex := 0
         else if s_type = 'filethen
            child2.ImageIndex := 2
         else if s_type = 'hiddenthen
            child2.ImageIndex := 4
         else if s_type = 'checkboxthen
            child2.ImageIndex := 5
         else if s_type = 'radiothen
            child2.ImageIndex := 6
         else if s_type = 'select-onethen
            child2.ImageIndex := 7
         else
            child2.ImageIndex := -1;

         child3 := root.AddChild(child2, s_type);
         child3.ImageIndex := -1;


         if s_type = 'textthen
         begin
            child3 := root.AddChild(child2, 'MaxLen='+IntToStr(Element.maxLength));
            child3.ImageIndex := -1;
         end
         else if s_type = 'select-onethen
         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;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#10

Re: TWebBrowser : Alle Input Felder, Bilder etc. auflisten

  Alt 4. Aug 2005, 17:07
 root := TreeView1.Items; da bringt er mir "undefinierter Bezeichner" obwohl ein TreeView namens TreeView1 existiert
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 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