[TUT]Wie programmiere ich ein Webdownloader mit Visual Basic 2008?

  • Wilkommen zu meinem Guide „Wie programmiere ich ein Webdownloader mit Visual Basic 2008?“


    Vorwort:
    Diese Funktion kann als einzelndes Programm stehen kann aber auch als Updatefunktion in ein Anderes Programm eingebaut werden! Für diesen Guide ist ein bißchen Erfahrung mit Visual Basic vorraus gesetzt!



    An das programmieren:
    Als 1. Öffnen sie ein Neues Projekt!
    Platzieren sie auf beliebige Orte: 1 Button, 2 Textboxen (mindestens für Zieldatei und Quelldatei)
    Dies reicht schon für die Grundausstattung. Mehr muss erstmal nicht hin.
    Gehen Sie nun zu den Quellcode und tippen sie „Private withEvents httpclient As WebClient“ Der Befelt webclient wird er noch nicht erkennen dazu müssen Wir erst ganz oben folgendes eingeben „Imports System. Net“ Jetzt erkennt er auch den Befehl!
    Jetzt müssen wir den Button füllen. Dazu geben wir ein „httpclient = New Webclient“ Die nächste Zeile geht dann schon an das Eingemacht! Nun geben wir „httpclient. downloadFileAsync(New Uri(TextBox1.Text) , TextBox2.Text)“
    Dies bedeutet das nun die Textbox1.Text die Quelle ist und TextBox2.Text das Ziel ist!
    Dies war es eigentlich schon mit der Absoluten Grundausstattung! Jetzt müssen wir nur noch die Datei die wir downloaden wollen in die TextBox1.Text schreiben und das Ziel in TextBox2.Text. Dies ganze ist noch rechtmager es fehlen zum Beispiel wie groß die Datei ist oder auch wie weit unser Download ist. Was auch noch fehlt ist ein sogenanntes Fehlerhandling für den Fall das der User ein Fehler gemacht hat z.B. eine falsche URL eingegeben hat! Probieren sie das Programm aus ob es denn auch so auch funktioniert! In den Nächsten Schritten geht es dann ums Einkleiden!


    Als erstes gestalten wir die Textboxen sauberer.
    Geben sie in dem Sub von „Button1_Click“ zwischen „httpclient = New WebCLient“ und httpclient. downloadFileAsync(New Uri(TextBox1.Text) , TextBox2.Text)“ folgendes ein: „Dim SourceURL As String = TextBox1.Text“ Das selbe machen Wir auch mit dem Ziel. Geben sie nun in der Nächsten Reihe folgendes ein: „ Dim ZielDatei As String = TextBox2.Text“
    Jetzt müssen wir dies nun auch in der Reihe: „httpclient. downloadFileAsync(New Uri(TextBox1.Text) , TextBox2.Text)“ ersetzen und zwar so: „httpclient. downloadFileAsync(New Uri(SourceURL) , Zieldatei)“
    Als nächstes kümmern wir uns um den Button.
    Als 1. Werden wir uns darum kümmern das der Benutzer nicht den Download 2mal ausversehen beginnt. Dazu „enablen“ wir den Button bei dem Startvorgang. Dies geschieht so:
    Dazu geben wir zwischen „ Dim ZielDatei As String = TextBox2.Text“ und „httpclient. downloadFileAsync(New Uri(SourceURL) , Zieldatei)“ folgendes ein: „Button1.Enable = False“
    Jetzt wissen wir aber noch nicht wann der Download fertig ist dazu müssen wir uns die Eigenschaften von unserem „httpclient“ angucken! Dort finden wir den Eintrag „httpclient_DownloadFileCompletet“ aktivieren Sie ihn.
    Jetzt geben sie in den Private Sub „httpclient_DownloadFileCompletet“ folgendes ein:
    „Button1.Enable = True“
    Speichern sie alles ab und starten Sie das Programm und klicken sie auf den Button, er sollte danach nicht anklick bar sein. Erst wenn die Datei fertig ist können Sie ihn wieder anklicken.


    Das war der Button jetzt kümmern wir uns um die „Progressbar“!
    Platzieren wir einfach die „Progressbar“ beliebig in unser Programm!
    Als erstes sollten wir einstellen wenn der Button1 aktiviert wird das die Progressbar resettet wird. Dazu gehen wir in den Sub vom Button1 und geben zwischen „Dim ZielDatei As String = TextBox2.Text“ und „Button1.Enable = True“ folgendes ein: „ProgressBar1.Value = 0“ und in der nächsten Reihe: „ProgressBar1.Maximum = 100“ Dabei gehen wir von 100% aus.
    Jetzt müssen wir uns überlegen ob man die Progressbar normalerweise nicht sehen kann oder ob man sie immer sehen kann. Wenn nein klicken sie auf die Progressbar und ändern sie den Eintrag: „Visible“ von True auf False.
    Jetzt setzen wir nach „httpclient. downloadFileAsync(New Uri(SourceURL) , Zieldatei)“ folgendes: „ProgressBar1.Visible = True“
    Jetzt haben wir aber noch nicht die Rutine für „httpclient_DownloadFileCompletet“. Dazu gehen wir auf die Eigenschaften vom httpclient und suchen den Eintrag: „DownloadProgressChanged“
    Dort müssen wir einfach nurnoch folgendes reinschreiben: „ProgressBar1.Value = e.ProgressPercentage“
    Jetzt köönnte man sich noch überlegen ob die Progressbar wieder verschwindet wenn der Download abgeschlossen ist. Dazu müssen wir ind den Sub von „httpclient_DownloadFileCompleted“ gehen und folgendes nach: „Button1.Enable = True“ folgendes reinschreiben: „ProgressBar1.Visible = False


    Speichern Sie alles ab und probieren sie das Programm aus. Jetzt sollte die Progressbar auftauchen und zum Schluss wieder verschwinden, wenn Sie es so eingestellt haben!


    Als letztes geben wir dem Benutzer noch ein Lable, damit er ablesen kann wie groß die Datei ist, wie viel er schon herruntergeladen hat und auch wie schnell er herrunterläd!


    Als 1. Gehen Sie in die Toolbox und fügen sie ein Lable hinzu und platzieren sie es im Programm. SO das Feedback von unserem Lable wird natürlich auch über „httpclient_DownloadProgressChanged“ abgewickelt.
    Geben Sie nach „ProgressBar1.Value = e.ProgressPercentage“ folgendes ein: „Dim totalbytes As Long = e.TotalBytesToRecieve / 1024“
    Dann in der Nächsten Reihe: „Dim bytes As Long e.BytesRecieved / 1024“
    Dann wieder in die nächste Reihe: „Label1.Text = bytes.ToString & „ (beliebiger Text z.B. KB von) “ & totalbytes.ToString & „ KB“


    Speichern wir alles ab und starten das Programm nun sollten auch die Größen angegeben sein!
    Jetzt könnte man nur noch in Schwierigkeiten kommen wenn die Datei kleiner ist als 1 KB. Dazu könnte man noch eine „If“ Schleife setzen.
    Setzen Sie zwischen „Dim bytes As Long e.BytesRecieved / 1024“ und Label1.Text = bytes.ToString & „ (beliebiger Text z.B. KB von) “ & totalbytes.ToString & „ KB““ folgendes ein: „If totalbytes < 1 Then totalbytes = 1“
    Nächste Reihe sollte dann schon stehen: „End If“ schreiben Sie noch „Else :“ davor damit es so aussieht: „Else : End If“ Diesen Schritt wiederholen Sie wieder und setzen anstatt „totalbytes“ „bytes“ ein!
    Jetzt könnte man es noch so machen das wenn die Daten so groß sind, es nur noch in MB angezeigt werden. Dazu setzen sie unter: „Dim totalbytes As Long = e.TotalBytesToRecieve / 1024“ folgendes ein: „Dim mtotalbytes As Long = totalbytes/ 1024“ Dasselbe machen wir dann noch mit den Bytes. Also unter „Dim bytes As Long e.BytesRecieved / 1024“ setzen wir noch: „Dim mbytes As Long bytes / 1024“
    Jetzt müssen wir auch noch das Lable ändern. Dazu geben wir über: „Label1.Text = bytes.ToString & „ (beliebiger Text z.B. KB von) “ & totalbytes.ToString & „ KB“ folgendes ein:
    „If totalbytes > 1024 Then
    Label1.Text = mbytes.ToString & „ (beliebiger Text z.B. MB von) “ & mtotalbytes.ToString & „ MB“
    Else“
    Dann nach: „Label1.Text = bytes.ToString & „ (beliebiger Text z.B. KB von) “ & totalbytes.ToString & „ KB“ in der nächsten Reihe ein „End If“ setzen!


    Als Nächstes werden wir uns darum kümmern falls wenn der Benutzer ein Fehler macht ihn auch angezeigt bekommt! Im schlimmsten Fall können diese Fehler das Programm aufhängen oder auch das ganze Betriebssystem aufhängen. Dann können wir uns immer über schöne E-Mails von unseren Usern freuen, die uns die Möglichkeit öffnen ganz neue Schimpfwörter zu lernen.
    Um das zu unterbinden gehen wir in den Quellcode von dem Button1 den hier nimmt der Fehler den Ursprung.
    Dort gehen wir auf „Button1.Enable = False“ und geben in der nächsten Reihe folgendes ein: „Try“ und gehen danach an das Ende des Subs und geben dort „Catch ex As Exception“ ein. Das ganze wird dann in der nächsten Reihe mit „end Try“ abgeschlossen.
    Jetzt geben wir zwischen den Beiden Zeilen folgendes ein: „Button1.Enable = True“ Damit wir erstmal den Button wiederbekommen.
    Um den User zu informieren nehmen wir einfach eine Messagebox dazu geben wir unter „Catch ex As Exception“ das ein: „MsgBox („Hier steht der Text der bei einem Fehler gegeben wird z.B. „Fehler!“ & vbCrLf & ex.Message, MsgBoxStyle.Exclamation“)






    Das wars, Ich hoffe es hat euch gefallen
    MfG Zaziki

  • Du schreibts recht viel, nen Code würde mehr helfen, da hier fast eh keiner damit wass anfangen kann :D