Hi,
Um eine Datei herunterladen und auf der Festplatte zu speichern: Datei-Download via API-Funktion
Um den Dateiinhalt in einen String zu laden (ANSI nach Unicode-Konvertierung), ohne die Datei auf Festplatte zu speichern:
Private Enum dwAccessType
INTERNET_OPEN_TYPE_PRECONFIG = 0
INTERNET_OPEN_TYPE_DIRECT = 1
INTERNET_OPEN_TYPE_PROXY = 3
INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4
End Enum
Private Declare Function InternetOpen Lib "wininet" _
Alias "InternetOpenA" ( _
ByVal lpszAgent As String, _
ByVal dwAccessType As dwAccessType, _
ByVal lpszProxyName As String, _
ByVal lpszProxyBypass As String, _
ByVal dwFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet" _
Alias "InternetOpenUrlA" ( _
ByVal hInternet As Long, _
ByVal lpszUrl As String, _
ByVal lpszHeaders As String, _
ByVal dwHeadersLength As Long, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet" ( _
ByVal hFile As Long, _
lpBuffer As Any, _
ByVal dwNumberOfBytesToRead As Long, _
lpdwNumberOfBytesRead As Long) As Boolean
Private Declare Function InternetCloseHandle Lib "wininet" ( _
ByVal hInternet As Long) As Boolean
'Die 2 san für multi-threading-only
Public MultiFinished As Long
Public MultiURL As String
Public Function DownloadURL(ByVal URL As String) As String
Dim hInternet As Long, hURL As Long, retBool As Boolean, TempLesePuffer As _
String, URLInhalt As String, tempBytesRead As Long
hInternet = InternetOpen("Useragent" & Chr(0), INTERNET_OPEN_TYPE_DIRECT, _
Chr(0), Chr(0), 0)
If hInternet = 0 Then Err.Raise -1, "InternetOpen", "Fehler beim Erstellen" & _
"des Internet-Handles.", "", ""
hURL = InternetOpenUrl(hInternet, URL & Chr(0), Chr(0), -1, &H80000000, 0)
If hURL = 0 Then Err.Raise -1, "InternetOpenUrl", "Fehler beim Erstellen" & _
"des URL-Handles."
TempLesePuffer = Space(100001)
Do
retBool = InternetReadFile(hURL, ByVal TempLesePuffer, 100000, _
tempBytesRead)
If Not tempBytesRead = 0 Then URLInhalt = URLInhalt & Mid( _
TempLesePuffer, 1, tempBytesRead)
Loop While Not tempBytesRead = 0
DownloadURL = URLInhalt
retBool = InternetCloseHandle(hURL)
If Not CLng(retBool) = 1 Then Err.Raise -1, "InternetCloseHandle", "Fehler" & _
"beim Schließen des URL-Handles."
retBool = InternetCloseHandle(hInternet)
If Not CLng(retBool) = 1 Then Err.Raise -1, "InternetCloseHandle", "Fehler" & _
"beim Schließen des Internet-Handles."
End Function |