Abfrage, ob Dateien downgeloadet werden/wurden

Bizkit

Mitglied
Hallo zusammen,

ich habe eine Frage
(wie) kann ich von VB6 oder VB.Net aus überwachen, ob eine Datei aus dem
Internet heruntergeladen wurde, bzw wohin ich gespeichert habe (nur bei dem
Download der über "Ziel speichern unter" entsteht) bzw, ob die Datei schon
fertig heruntergeladen wurde.

Denke mal, sowas müsste mit einem Trigger geprüft werden, aber wo prüfe ich
sowas? und kann ich die Ergebnisse eventuell in eine oder mehreren Variablen
speichern, so das ich auf die ergebnisse von Visual FoxPro zugreifen kann?

Hat jemand von euch soetwas schon mal gemacht oder kann mir sagen, wo ich
hierzu hilfe finde.


Ich brauche dies Programm für folgendes:

Ich öffne meinen Internet Explorer, und surfe einfach auf eine Seite, dort finde ich eine Datei die ich downloade. Sei es über einen einfachen klick, oder über den rechtsklick und dann speicher unter.
Mein Programm soll nun den Dateinamen, den ich beim Speichern angebe und den Pfad so speichern, das ich aus einem anderen Programm darauf zugreifen kann.
Vorzusweise wird dies Visual FoxPro 7.0 sein

Danke jetzt schon mal
 
Mit APIs URLDownloadToFile ist Dein Problem wahrscheinlich am einfachsten zu lösen. Damit wird der DL aus Deinem Proggi gesteuert.

Ansonsten kannst Du auch alternativ mit einem Timer und APIs "SearchTreeForFile" oder "FindFirstFile / FindNextFile" prüfen, ob die Datei vorhanden ist.
 
Erstmal Danke für deine Hilfe.

Aber mein Programm sollte es "merken" wenn ich eine datei im IE herunterlade.

Habe mit dem Programm SPY++ die ProcessID ThreadID und WindowsHadle ausgelesen. Kann man nicht prüfen, ob eine dies Fenster (Speichern unter) geöffnet ist.
Nur wie prüfe ich ob dies Fenster geöffnet ist.

Weiß nicht ob ich mit den beiden unteren API Befehlen das hinbekommen, das mein Programm weis, das ich eine Datei herunterlade.
 
Es wird dir wohl herzlich wenig helfen, wenn du einmal die ProcessID, etc ausgelesen hast, da diese spätestens bei einem Neustart wieder anders sind.

Allerdings kannst du sehr wohl überprüfen, welche Fenster gerade offen sind und welche ThreadID/ProcessID/Fensternamen sie haben. Dieser Tipp wird dir sicherlich weiterhelfen können.
 
Würde das auch gerne über die API'S machen:

URLDownloadToFile
SearchTreeForFile
FindFirstFile / FindNextFile

Nur leider habe ich keine Ahnung, wie ich diese API's anspreche

Kann mir da vll jemand helfen
 
Hi Bizkit,

im Bezug auf APIs hat Filone schon mal in einem früheren Posting das API-Guide von mentalis.org erwähnt. Ich hab mir das Ding mal runtergeladen und bin davon echt begeistert.

Also, mit den APIs die du verwenden möchtest habe ich noch nicht gearbeitet aber in dem Guide gibt es kleine Beispiele für die Verwendung.
 
Erstmal danke für das Programm, das ist echt super

Aber mit dem API kann ich für meine bedürfnisse nichts anfangen

URLDownloadToFile :
Download aus dem Internet

Suchen von Datienen:
SearchTreeForFile
FindFirstFile / FindNextFile

Aber ich glaube, es gibt keine möglickeit, diesen WindowsDialog abzufangen bzw auszulesen. Wie ich dateien suchen oder herunterlade ist ja kein Problem, aber das Problem ist es halt die eingaben aus diesem WindowsDialog auszulesen.
 
Naja, ich halte es für technisch machbar aber es ist eben nicht einfach in einem anderen Programm "rumzufummeln". Deswegen gibt es ja Mittel, die das ganze dann auf andere Art und Weise lösen können, wenn die Methodik vielleicht auch nicht an der Disziplin "Code des Jahres" teilnimmt. *g*

Egal, zur Sache :

eine Möglichkeit wäre, einen Ordner zu erstellen in dem alle DLs gespeichert werden. Aus Deinem Proggi heraus kannst Du beim Start in ein Listenfeld eintragen lassen, welche Dateien dort schon vorhanden sind. Dann startest Du Deine DLs, während Du in Deiner VB-Application einen Timer startest, der alle paar Sekunden Dein DL-Verzeichnis mittels FindFirstFile/FindNextFile ausliest. Diese Ergebnisse werden dann untersucht, z.B. in der Art und Weise daß er bei jedem gefundenen File in der Liste prüft. Ist die Datei schon in der Liste, ist es keine neue - also weitermachen. Ist die Datei noch nicht in der Liste, ist es eine neue - also eintragen und rot markieren oder sonstwas damit machen.

Der PseudoCode wäre dann

Code:
Public Sub CheckNewDownLoads()

 Dim FileFD As WIN32_FIND_DATA

  Untersuche Verzeichnis auf Dateien
  Wenn FileGefunden Dann
    Wenn File schon in Liste dann
      Weitermachen
    Sonst
     Füge Dateinamen in Liste
    Ende Wenn
  Ende Wenn

End Sub

Wenn es bei der Anwendung der APIs Probleme gibt können wir uns gerne mal darüber unterhalten, die sind nicht sonderlich schwer.
 
Zurück