VB - Datei herunterladen, warten und nach erfolgreichem Download automatisch ausführen

...komplette Frage anzeigen

4 Antworten

Mache es so ähnlich, wie es "geri3d" vorgeschlagen hat. Entweder lässt du es so, wie ich schon schrieb, ist es ein synchoner Download, oder du machst daraus einen asynchonen Download. Hierzu musst du anstatt client.Download... ein client.DownloadAsyn... verwenden.

Das initialisierte Client-Objekt namens "client" bietet Funktionen, die beim Abschluss des Downloads aufgerufen werden. Initialisiere die Klasse, wie es "geri3d" beschrieb, also mit

Private WithEvents client As New System.Net.WebClient. 

Dann gebe "client" ein und einen Punkt. Halte Ausschau nach dem Event "AsyncDownloadFinished" oder so ähnlich. Ich weiss das jetzt nicht auswendig, habe auch keine VB-Entwicklungsumgebung offen. Wähle dieses Event und drücke einfach die Tab-Taste. Es wird dann automatisch das Event angelegt. Hier kommt du also hin, wenn der Transfer abgeschlossen ist.

Jetzt must du nur noch den Transfer definieren und starten. Schau dir am besten diesen Link an, hier wird alles ausgezeichnet erklärt. Es ist alles enthalten, was du brauchst. Oben wird der synchone und unten der asynchone Download beschrieben: http://www.digitalcoding.com/Code-Snippets/VB/Visual-Basic-Code-Snippet-Download-File-from-URL.html

Toi-Toi! Hau in die Tasten!

Toraka 02.04.2012, 18:56

Ach so, vergiss alles andere. Winsock ist veraltet, das nutzte man früher in Visual Basic 6.0, aber nicht mehr in VB.NET. Und InternetReadFile ist zu umständlich. Es gibt eine für dein Vorhaben ausgelegte Funktion, und das ist üblicherweise über ein WebClient. Natürlich führen viele Wege nach Rom. Aber warum so umständlich, wenn es diese einfache Möglichkeit gibt.

0

Das ganze geht vieeeeeeeel einfacher.

My.Computer.Network.Downloadfile("URL", "derneuename.exe oder so", "falls das ein ftp server is hier der benutzername", "falls ftpserver passwort")

Shell("derneuename.exe")

Falls das kein Ftp Server is kannst die letzten 2 weg lassen! um das ganze denn auszuführen machst einfach wie oben das Shell. Das ganze wird in den ApplicationStartupPtah gedownloadet. Also der Ordner inden das ganze runtergeladen wurde.

Ich habe in google eingegeben: "erkennen wenn download fertig ist vb" und fand das

Public Class Form1

 Private WithEvents Client As New System.Net.WebClient

 Public Sub Form1_Load() Handles MyBase.Load
  Client.DownloadFile("link")
  MessageBox.Show("Fertisch.")
 End Sub

Private Sub Client(sender ?, e kackeventarguments) Handles wc.DownloadFileCOmpleted

End Sub

End Class

oder so ähnlich

geri3d 02.04.2012, 15:44

Vergiss den Code. Vom prinzip her gehts so, aber nicht mit dem Geröll was ich dir da geschickt habe (sorry, wollte nur die 10 Punkte)

0
Toraka 02.04.2012, 18:43
@geri3d

Warum, sollte doch ok so sein. Es handelt sich dabei um einen synchronen Datenverkehr, im Gegensatz zum asynchronen Verkehr, der im Hintergrund läuft, deshalb auch Funktionen aufweise, die getriggert werden, wenn z.B. der Download oder Upload abgeschlossen ist.

0
geri3d 02.04.2012, 19:06
@Toraka

habs nur kopiert ohne genau nachzusehen. Ich würd sonnst ein Argument nicht kackeventarguments nennen *g

0

Was möchtest Du wissen?