Hallo Chaos,
ich weiss zwar immerhin noch nicht, welche du nun willst, da hier auch 2 Varianten in Frage kommen. Aber dann poste ich dir eben beide *bg*
Kannst dir ja dann eine aussuchen 
So, nehmen wir an du möchtest das File "hhtp://abc.de/test.exe haben.
So sieht das Demo wiefolgt aus.
Hast du in deinem Programm schon ein Modul? wenn ja dann ist gut, wenn nicht dann erstelle ein Modul.
Variante 1 über die API
Code fürs Modul
option explicit
Declare Function DoFileDownload Lib "shdocvw.dll"(Byval lpszFile As String) As Long
public sub Download\_Start (Byval Url as string)
on error resume next
dim StrUrl as string
strURL = StrConv(Url, vbUnicode) 'Umwandlung des Strings in den Unicode
DoFileDownload strURL
end sub
Aufruf über
Download\_Start "Http://abc.de/test.exe" ' Hier das zu ladende File angeben
Variante 2 über das Winsock Steuerelement.
Wie gesagt es ist ein wenig mehr Aufwand :s Aber es lohnt sich.
Füge dazu in dein project ein Klassenmodul ein.
Aus diesem Modul wird auf deine Form zugriffen. Auf dieser Form musst du das Winsock Steuerlement setzen. Wenn der Name der Form nicht Form1 ist, so aendere diesen noch im Klassenmodul ab. Daselbe gilt wenn der Name für das Winsock Steuerlement nicht Winsock1 ist!
Code fürs Klassenmodul
Option Explicit
Private WithEvents mSockCtrl As MSWinsockLib.Winsock
Private strRemoteHost As String
Private strFilePath As String
Private strLocalFilename As String
Private bFinished As Boolean
Private bHeaderSend As Boolean
Private lngFileSize As Long
Public Event Start()
Public Event Progress(ByVal BytesLoaded As Long, ByVal FileSize As Long)
Public Event Finished()
Public Function DoDownload(ByVal strURL As String, ByVal strLocalFile As String) As Boolean
On Error GoTo Download\_Error
If LCase$(Left$(strURL, 7)) = "http://" Then
strURL = Mid$(strURL, 8)
End If
strRemoteHost = Left$(strURL, InStr(1, strURL, "/") - 1)
strFilePath = Mid$(strURL, InStr(1, strURL, "/"))
strLocalFilename = strLocalFile
If Dir$(strLocalFilename, vbNormal) "" Then
Kill strLocalFilename
End If
If mSockCtrl Is Nothing Then
Dim frmTMP As New Form1
Set mSockCtrl = frmTMP.Winsock1
End If
bFinished = False
bHeaderSend = False
lngFileSize = 0
With mSockCtrl
.Close
.LocalPort = 0
.Connect strRemoteHost, 80
End With
On Error Resume Next
Set frmTMP = Nothing
Unload Form1
DoDownload = True
Exit Function
Download\_Error:
If Err.Number = 5 Then
strURL = strURL & "/"
Resume 0
Else
MsgBox "Fehler!" & vbCrLf & "Error: " & Err.Number & \_
vbCrLf & Err.Description, 16
End If
DoDownload = False
End Function
Private Sub mSockCtrl\_Connect()
Dim strHttpRequest As String
strHttpRequest = "GET " & strFilePath & " HTTP/1.1" & vbCrLf & \_
"Host: " & strRemoteHost & vbCrLf & \_
"Accept: \*/\*" & vbCrLf & \_
"Connection: close" & vbCrLf & vbCrLf
mSockCtrl.SendData strHttpRequest
RaiseEvent Start
End Sub
Private Sub mSockCtrl\_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Static lngContentLength As Long
Dim strData As String
Dim strHttpHeader As String
Dim F As Integer
Dim lPos As Long
mSockCtrl.GetData strData
If Not bHeaderSend And Left$(strData, 8) = "HTTP/1.1" Then
strHttpHeader = Left$(strData, InStr(1, strData, \_
vbCrLf & vbCrLf) + 3)
lPos = InStr(strHttpHeader, "Content-Length: ")
If lPos \> 0 Then
lngContentLength = Val(Mid$(strHttpHeader, lPos + 15, \_
InStr(Mid$(strHttpHeader, lPos), vbCrLf) - 1))
End If
strData = Mid$(strData, Len(strHttpHeader) + 1)
bHeaderSend = True
End If
If Not bHeaderSend Then lngContentLength = 0
F = FreeFile
Open strLocalFilename For Append As #F
Print #F, strData;
Close #F
lngFileSize = lngFileSize + Len(strData)
RaiseEvent Progress(lngFileSize, lngContentLength)
End Sub
' Downlaod beendet
Private Sub mSockCtrl\_Close()
If Not bFinished Then
bFinished = True
RaiseEvent Finished
End If
End Sub
Public Sub AbortDownload()
On Local Error Resume Next
mSockCtrl.Close
Set mSockCtrl = Nothing
End Sub
So des waerte der Code für das Modul und hier der Code für die Form.
Ich habe dir da ein kleines Demo gemacht. Dazu brauchst du 2 Schaltflächen mit den Namen cmdstart und cmdabort. Dann noch 2 textboxen für die eingaben der url und des lokalen Filenamen. die muessen den Namen txturl und txtlocal haben. Dann brauchst du noch ein Label mit den Namen lblstatus für die Anzeige der derzeit ausgeführten Aktion. Dann noch eine Picturebox mit dem namen picprogress für die Anzeige des Fortschritts.
Functionsweise ist folgende.
Das Klassenmodul führt den Download durch ueber das Winsock Steuerlement. Sobald daten hereinkommen löst das Klassenmodul ereignisse aus.
Über die Zeile ‚Dim WithEvents FileDownload As clsDownload‘ stellst du der Form diese Ereignisse zur Verfügung.
Wenn du die Anzeigen nicht brauchst, kannst du sie natürlich auch weglassen 
Wie du siehst ist es ein rel. Grosser Aufwand dies zu bewerkstelligen aber es lohnt sich.
Wenn du öfters so etwas brauchst, dann bastel dir am einfachsten eine Active-x Dll daraus und dann kannst du sie immer einbinden und den Download über 1 Zeile starten 
ICh hoffe ich konnte dir ein wenig helfen.
MFG Alex
Code für die Form
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]