На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Нужна помощь от профессионалов...
    Кто работал в Инете?
    Тут вот какое дело: надо закачать файл, но попутно получать о ходе процесса информацию (сколько закачено, сколько осталось, скорость и т.д. и т.п.)
    Я знаю 3 варианта закачки
    * Inet1.Execute "FTP://ftp.microsoft.com", "GET disclaimer.txt C:\Temp\Disclaimer.txt"
    Использует MS Internet Transfer Control. Соответственно по FTP протоколу. С HTTP у меня возникли БОЛЬШИЕ проблемы. Кто знает как это переделать в работоспособную закачку по HTTP - Help, please !!!
    * Inet1.URL = "http://northeurope.by.ru/norway.html"
    b() = Inet1.OpenURL(, icByteArray)
    Open "C:\norway.html" For Binary Access Write As #1
    Put #1, , b()
    Close #1
    Использует MS Internet Transfer Control. Работает. Но пока не закачает не успокоится. Инфу получить нереально.
    * С использованием API-функций: InternetOpen, InternetOpenURL и InternetReadFile. Самое интересное. В описании есть такая строчки
    'Read the first 1000 bytes of the file
    InternetReadFile hFile, sекBuffer, 1000, 0
    Ну во-первых, как закачать НЕ "first" 1000 байтов, а, например, с 1001 по 2000?
    Function InternetReadFile Lib "wininet" (..., ..., ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
    нутром чую, что это связанно с lNumberOfBytesRead. Во-вторых, этот прикол работает только с текстовыми файлами. На что-нибудь из серии мультимедиа или архива - глохнет (выдает сколько угодно (всегда меньше), но не 1000 байт). И наконец третье - как узнать сколько надо закачивать? Как узнать размер файла?
    Кто хоть что-то знает о работе в Инет (в смысле DownLoad) - пишите (vartovsk@nptus.ru)
    ------------------
    Летают тут всякие... Ангелы.
      А напрямую - через WinSock слабо?? Только так можно получить \% закачки.
        Да все ф-ции Winsock.dll объявляются как обычные АПИ, но стоит ли морочить яйца, когда за тебя это сделали другие.
        Здесь важно знать что такое сокет, и как формируетсфя запрос. Вся операция сводится к применению обычного Winsock Control!
        Private Sub Form_Load()
        Winsock1.RemoteHost = "vbcode.webhostme.com"
        Winsock1.RemotePort = 80
        Winsock1.Connect
        End Sub
        Private Sub Winsock1_Connect()
        Dim strCommand as String
        Dim strWebPage as String
        strWebPage = "http://vbcode.webhostme.com/en/home.html"
        strCommand = "GET " & strWebPage & " HTTP/1.0" & vbCrLf
        strCommand = strCommand & "Accept: */*" & vbCrLf
        strCommand = strCommand & "Accept: text/html" & vbCrLf
        strCommand = strCommand & vbCrLf
        Winsock1.SendData strCommand
        End Sub
        ' С получением первых байтов происходит событие написанное ниже, bytesTotal - размер файла, а Winsock1.BytesReceived - сколько уже пришло!

        Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Dim strData As String
        Winsock1.GetData strData, vbString
        Text1.Text = Text1.Text & strData
        End Sub
        PS: Вообще этому способу пофиг с какими ф-лами работать, но эсли ф-л не текстовый то запрос и GetData нужно писать по другому!
        For more information read something!
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0226 ]   [ 16 queries used ]   [ Generated: 2.05.24, 06:59 GMT ]