Internet Explorer предоставляет доступный интерфейс COM, который вы можете использовать. Если вам действительно нужно. Я бы рекомендовал против этого - его сравнительно медленный, подверженный ошибкам, громоздкий и ресурсоемкий.
Что более эффективно решает вашу проблему, используя WinHTTPRequest
. В вашем проекте, ссылка «Microsoft WinHTTP Services, версия 5.1», а затем в том же духе:
Dim HttpRequest As New WinHttp.WinHttpRequest
Dim TargetUrl As String
Dim TargetFile As String
Dim FileNum As Integer
TargetFile = "C:\foo.doc"
TargetUrl = "http://www.websiteurl.com"
HttpRequest.Open Method:="GET", Url:=TargetUrl, Async:=False
HttpRequest.Send
If HttpRequest.Status = 302 Then
TargetUrl = HttpRequest.GetResponseHeader("Location")
HttpRequest.Open Method:="GET", Url:=TargetUrl, Async:=False
HttpRequest.Send
If HttpRequest.Status = "200" Then
FileNum = FreeFile
Open TargetFile For Binary As #FileNum
Put #FileNum, 1, HttpRequest.ResponseBody
Close FileNum
Debug.Print "Successfully witten " & TargetFile
Else
Debug.Print "Download failed. Received HTTP status: " & HttpRequest.Status
End If
Else
Debug.Print "Expected Redirect. Received HTTP status: " & HttpRequest.Status
End If
Hard-кодирование "C:\foo.doc"
делает, конечно, не имеет особого смысла. Я бы использовал имя файла, которое сервер подает в заголовках ответов ("Content-Type"
или "Content-Disposition"
, в зависимости от того, что вы ожидаете).
Любая конкретная причина, по которой вам нужен IE, чтобы вызвать пользователя? Почему бы просто не сделать свое приглашение, а затем использовать свой собственный код для загрузки файла. HTTP-запросы (именно это будет делать IE) довольно стандартизированы и, в основном, легко кодируются. – 2008-10-26 01:10:55