![]() |
Embedded WB Ftp Laufwerk
Hey
Ich habe eine Frage. Ich habe heute mit embdw1 erfolgreich zu einem FTP verbunden. Dort bekomme ich ein Explorerfenster angezeigt mit allen was so enthalten ist. Aber wie mache ich den Automatisch weiter? Wie würde ich den nun einen Ordner ansteuern oder eine Datei laden? Z.B.
Delphi-Quellcode:
bleibt leer ?!?
embdwb1.ViewPageSourceHtmlToStrings(list);
Eure SM :) |
AW: Embedded WB Ftp Laufwerk
Ist nicht ganz das, was du vorgeschlagen hast.
Ich nutze die Indy Komponenten und da habe ich keine derartigen Probleme. |
AW: Embedded WB Ftp Laufwerk
Hi
Den Download mit UrlDownloadToFile und das Ansteuern mit Navigate. Hänge dich in die Links rein (EventListener) und führe selbst das Navigate aus. |
AW: Embedded WB Ftp Laufwerk
In dem Fall geht es um den Embedded WB und ich würde gerne wenn möglich damit arbeiten.
Mit dem Download hab ich verstanden. Wie lasse ich mir die Ordner/Files den Auflisten, um sie zu durchsuchen/laden? Grüße SM |
AW: Embedded WB Ftp Laufwerk
Hi
Der EmbeddedWB bietet eine Menge Events für solche Zwecke an. Wenn das Dokument geladen ist, dann wird das DocumentComplete gefeuert. Dort kannst du auf alle geladenen HTML Elemente per Doc2 zugreifen und diese erweitern/manipulieren. Um z.b. eine Liste aller geladenen Links zu erhalten, kannst du so vorgehen:
Code:
Willst du eigenes Verhalten einbauen, dann erweitere das HTML Element. Du kannst z.b. die Einträge aus dem FTP auslesen und das OnClick auf ein eigenes Event umbiegen (Jedes HTML Element hat ein OnClick Event).var lDispatch: IDispatch; lHTMLCollection: IHTMLElementCollection; lHTMLElement: IHTMLElement; i: Integer; begin Result := nil; if Doc2 = NIL then begin Exit; end; // Ermittle alle Elemente lDispatch := Doc2.all; if Assigned(lDispatch) then begin lDispatch.QueryInterface(IHTMLElementCollection, lHTMLCollection); if Assigned(lHTMLCollection) then begin // Gehe alle Elemente durch i := 1; while (i <= lHTMLCollection.length) do begin // Ermittle mal das HTMLElement lDispatch := lHTMLCollection.item(pred(i), 0); lDispatch.QueryInterface(IHTMLElement, lHTMLElement); if Assigned(lHTMLElement) then begin if (CompareText(lHTMLElement.TagName, 'A') = 0) then begin -> Hier weisst du, eigenes Verhalten implementieren end; end; inc(i); end; end; end; |
AW: Embedded WB Ftp Laufwerk
Danke für die Antwort.
Nachdem ich MSHtml in die Uses geschmissen habe und davon ausgehe das "doc2" ein "IHTMLDocument2" ist, bekomme ich die Fehlermeldung: "Interface wird nicht unterstützt." Wo liegt mein Fehler? Grüße SM
Delphi-Quellcode:
var
lDispatch: IDispatch; lHTMLCollection: IHTMLElementCollection; lHTMLElement: IHTMLElement; i: Integer; doc2: IHTMLDocument2; begin doc2 := embdwb1.document as IHTMLDocument2; lDispatch := Doc2.all; if Assigned(lDispatch) then begin lDispatch.QueryInterface(IHTMLElementCollection, lHTMLCollection); if Assigned(lHTMLCollection) then begin i := 1; while (i <= lHTMLCollection.length) do begin // Ermittle mal das HTMLElement lDispatch := lHTMLCollection.item(pred(i), 0); lDispatch.QueryInterface(IHTMLElement, lHTMLElement); if Assigned(lHTMLElement) then begin if (CompareText(lHTMLElement.TagName, 'A') = 0) then begin mmo1.Lines.Add(lHTMLElement.tagName); end; end; inc(i); end; end; end; end; |
AW: Embedded WB Ftp Laufwerk
Probier mal embdwb1.Doc2. Der EmbeddedWB hat bereits alles drinnen :-D
|
AW: Embedded WB Ftp Laufwerk
[OT]
auch wenn ich mich jetzt als Ignorant oute, was ist (Embedded) WB ? Gruß K-H [/OT] |
AW: Embedded WB Ftp Laufwerk
Der EmbeddedWB ist ein Wrapper um das ActiveX Control des IE. Es gibt zwar auch den TWebbrowser von Delphi, nur wrappt der TEmbeddedWB eine Unmenge mehr an Interfaces. Er ist so ziemlich die Komponente, die die Möglichkeiten des IE am besten in Delphi abbildet:
![]() |
AW: Embedded WB Ftp Laufwerk
Danke!
K-H |
AW: Embedded WB Ftp Laufwerk
Könntest du das etwas genauer ausführen? Alle varianten, die ich bisher versucht habe, endeten entweder mit Zugriffsverletzungen, oder wie vorher schon erwähnt
"Interface wird nicht unterstützt." duch das lDispatch Hätt ich ne Maus, würd ich sie Melken Liebe Grüße SM |
AW: Embedded WB Ftp Laufwerk
Auch hier würde ich mich wenn jemand Rat weiß freuen.
Gruß |
AW: Embedded WB Ftp Laufwerk
Wenn das Browsercontrol sich mit einem FTP-Server verbunden hast wirst du kein IHTMLDocument2 vorfinden. ist ja auch kein HTML-Dokument.
Wäre es nicht besser sich wenn man mit einem FTP-Server arbeitet mit einer FTP-Komponenten das zu versuchen? Ein Hammer ist ja auch nicht unbedingt das beste einen Schraube in die Wand zu bekommen. |
AW: Embedded WB Ftp Laufwerk
Hallo,
habe mir den "Spaß" mal angeschaut, der Embedded WB scheint beim Zugriff über FTP den Explorer zu kapseln. Nachdem ich ein paarmal per Embedded WB auf 'ne FTP-Seite zugegriffen hatte, dachte ich mir, schau doch mal, was der Explorer da so macht, also per Copy&Paste die URL dort rein und siehe da, er kannte sie schon und bot sie mir dort in seiner Auswahl an. Die Frage, die sich hier stellt ist also eher: Wie kommt man aus dem Embedded WB an das Listviewdingens des Explorers ran und kann von dort aus (wie auch immer) weiter arbeiten. Eigentlich hat man bei 'ner FTP-Seite im Embedded WB das, was man (zumindest unter Delphi 7) als TShellListView zur Verfügung hat. Embedded WB und TShellListView nutzen die Unit ShlObj, allerdings habe ich mir jetzt nicht die Mühe gemacht herauszufinden, ob und wo es da eine gemeinsame Schnittstelle geben könnte. |
AW: Embedded WB Ftp Laufwerk
Zitat:
Und wieso verwendest du nicht auch was anderes? Es gibt einige Delphi FTP-Komponenten mit (fertigen?) FTP-Client-Beispielimplementierungen. Nimm doch diese. |
AW: Embedded WB Ftp Laufwerk
Na, ich spekuliere jetzt mal:
Gehen wir davon aus, dass ein eigenes Programm entstehen soll, mit dem (auch) Webseiten angesehen werden können. Egal ob die jetzt nun aus dem großen weiten Netz kommen oder selbsterstellt von einem (eigenen) Webserver. Hier den Embedded WB zu nutzen ist eigentlich eine sinnvolle Entscheidung. Ok, je nach Anspruch tut's der TWebBrowser auch. Wenn man nun auf einer Webseite 'nen Link auf 'ne FTP-Seite hat, so kann man getrost im Embedded WB bleiben und dort weiter navigieren. Schön wäre es (finde ich jedenfalls), wenn man dann von dortaus auch alle die Möglichkeiten hat, die man für das Ansehen, Laden, Editieren... der Dateien auf dem Webserver hat, die man sich so wünscht. Nach meinen (bisherigen) Erkenntnissen scheint das aber nicht möglich zu sein, schade. Da muss dann ein eigener FTP-Client her. Oder man müsste versuchen (für den Anwender unsichtbar) den Embedded WB gegen 'n TShellListView auszutauschen, um dann die Oberfläche damit zu gestalten. Bin aber (bisher) daran gescheitert, dem TShellListView beizubringen (ohne zusätzliche Komponente(n)) mal zu 'ner FTP-Adresse zu navigieren. Wenn sich die Aufgabe mit dem Embedded WB lösen lassen sollte, ggfls. zusammen mit 'nem TShellListView, wird das vermutlich ein unsägliches Gefrickel. Das würd' ich mir nicht freiwillig antuen wollen. Webseiten kann man halt recht gut per Embedded WB "fernsteuern". Gerade bei per Javascript vervollständigten Seiten kommt man mit TIdHTTP (oder Ähnlichem) nicht weit. Und möchte man von sonner Seite dann 'nem FTP-Link automatisiert folgen, wird's wohl schwierig. Die Möglichkeit der Fernsteuerung von FTP-Seiten scheint es mit dem Embedded WB (so befürchte ich) nicht zu geben. |
AW: Embedded WB Ftp Laufwerk
Man kann einfach gut und fix mit einer sichtbaren Komponente durch UNC Pfade navigieren und zu kopieren auf PW geschützen ftp.
Ich habe bisher keine gute Möglichkeit in Delphi gefunden um das umzusetzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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