Открытие файла с hhtp

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Открытие файла с hhtp

Сообщение Алексей К. » 19.11.2004 (Пт) 9:03

Если загружаю файл в приложение, то загружается нормально:

Код: Выделить всё
Call Shell("C:\Program Files\Microsoft Office\Office10\winword.exe " & "http://сайт/207-2002.doc", vbNormalFocus)


А если хочу открыть его на получение данных из него, то пишет путь не найден:

Код: Выделить всё
a = "http://сайт/207-2002.doc"
Open a For Input As #1
Line Input #1, b$
c = MsgBox(b$)
End Sub


В чем тут дело?

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 19.11.2004 (Пт) 9:09

Дыык...
Это ж тебе не *nix.
Тут понятия локальный и удаленный различны. Просто Ворд умеет обращатся сам с линками.

Поэтому тебе надо самому лезть в Инет за файлом.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.11.2004 (Пт) 9:26

Афаик в юниксе поддержки HTTP на уровне системы тоже нет...
"Файл в инете" и "файл на HTTP-сервере" - всё-таки не одно и то же.

Алексей, код для скачки файла без форм и левых контролов я сюда уже постил - поищи по слову URLOpenBlockingStream
Изображение

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 19.11.2004 (Пт) 9:37

tyomitch

Угу, просто его недоумение с толку сбило :)
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 19.11.2004 (Пт) 9:52

Поиск результатов не дал. Мне скачивать на винт себе файл не нужно. Нужно обращение на http-сервер к этому файлу на чтение из него инфы.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.11.2004 (Пт) 9:54

URLOpenBlockingStream именно это и позволяет сделать :-)
Если шибко умный - можешь хоть через винсок HTTP-запросы слать :twisted:
Изображение

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 19.11.2004 (Пт) 10:11

tyomitch что-то никак не могу найти, если не трудно закинь код, пожалуйста

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.11.2004 (Пт) 10:19

Сейчас не могу, но вечером закину.

А вообще, готовый класс для всего этого дела лежит на http://www.mvps.org/emorcillo/vb6/inet/adl.shtml
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.11.2004 (Пт) 18:07

Вот, готово. Действительно, раньше я сюда постил немного не то :-)
Скачка файлов по HTTP без форм, без левых контролов, без TLB, вообще безо всяких зависимостей!!

Код: Выделить всё
Option Explicit
Private Declare Function URLOpenBlockingStream Lib "urlmon" Alias "URLOpenBlockingStreamA" (ByVal pCaller As IUnknown, ByVal szURL As String, ppStream As Long, ByVal dwResv As Long, ByVal lpfnCB As IUnknown) As Long
Private Declare Sub GetMem4 Lib "msvbvm60" (Src As Any, Dst As Any)
Private Declare Function CallProc Lib "user32" Alias "CallWindowProcA" (ByVal lpProc As Long, Param1 As Any, Param2 As Any, Param3 As Any, Param4 As Any) As Long

Sub Main()
Dim Stream As Long, Result As Long
Result = URLOpenBlockingStream(Nothing, "http://bbs.vbstreets.ru/viewtopic.php?t=11230", Stream, 0, Nothing)
If Result Then Debug.Print Hex(Result): End
Debug.Assert Stream
Dim pVTbl As Long: GetMem4 ByVal Stream, pVTbl
Dim pfnRead As Long: GetMem4 ByVal pVTbl + 12, pfnRead
Dim BytesRead As Long, Data As String * 256
Do
    BytesRead = 0
'Нам повезло, что у IStream::Read 3 параметра
    Result = CallProc(pfnRead, ByVal Stream, ByVal Data, ByVal 256&, BytesRead)
    If Result And (Result <> 1) Then Debug.Print Hex(Result): GoTo Cleanup
    Debug.Print Left(Data, BytesRead);
Loop Until BytesRead = 0
Cleanup:
'А вот как мы делаем IUnknown::Release
Dim o As IUnknown: GetMem4 Stream, o
End Sub
Изображение

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 22.11.2004 (Пн) 9:25

Спасибо! попробую


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 14

    TopList