powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / VBScript + XMLHTTP: Помогите сделать индикатор скачивания файла из сети.
6 сообщений из 6, страница 1 из 1
VBScript + XMLHTTP: Помогите сделать индикатор скачивания файла из сети.
    #38826697
я дилетант в программировании, но иногда, делаю себе "удобняшки". Одна из таких скачивает файлы с неких ресурсов.
Есть стандартный, шаблонный код:
Код: vbnet
1.
2.
3.
    Set objXMLHTTP = WScript.CreateObject("Microsoft.XMLHTTP")'
        objXMLHTTP.Open "GET", URL, False
         Call objXMLHTTP.Send


Все работает хорошо, если дело касается небольших файлов, но когда это видео на сотни мб... тишина и не ясно, что и как, скачивает или весит :(
(пс: если разорвать соединение из другой программы (например CurrPorts ) Loop зацикливается в бесконечности. Можно ли это как-то контролировать?)

Делал индикацию миганием SCROLLLOCK.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  
Set objXMLHTTP = WScript.CreateObject("Microsoft.XMLHTTP")
        objXMLHTTP.Open "GET", URL, True
         Call objXMLHTTP.Send

    Do
        WScript Sleep 1000
        objShell.SendKeys "{SCROLLLOCK}"

    Loop While objXMLHTTP.readyState <> 4


Не безопасно. Как понимаете, в другом приложении эта клавиша может отвечать за что-то важно. В общем, это не вариант.

Хочу сделать "простую" индикацию в консоле, но знаний ламера тут явно не достаточно.

Узнал, чтоб была консоль, нужно переключиться с wscript.exeна cscript. Чтоб не менять настройки системы, сделал таким способ:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 
              
	i = Split(WScript.FullName, "\")
	NAME_SCRIPT_HOST = Lcase(i(ubound(i))) 'имя wscript или сscript
	i = Empty

	WScript.Interactive = True

    if NAME_SCRIPT_HOST = "wscript.exe" then
		Set objCShell = WScript.CreateObject("WScript.Shell")
		objCShell.run "cscript //B " & chr(34) & WScript.ScriptFullName & "" & chr(34),1,1
		wscript.quit(0)

    end if


в этом случае весит скрипт и ждет окончания. Если закрыть, то уничтожается objCShell. Уверен, есть другой способ, как перезапустить скрипт и возможно, кто-то из вас его знает?))

Ну и про сам индикатор:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
  
Set objXMLHTTP = WScript.CreateObject("Microsoft.XMLHTTP")
        objXMLHTTP.Open "GET", URL, True
         Call objXMLHTTP.Send

    Do
         'индикатор
    Loop  While objXMLHTTP.readyState <> 4 



Как отправить символ в строку переписывая предыдущий? Например, как написать в одной и той же строке:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
 Echo "\"
Sleep=500 
'стереть строку
Echo  "/"
Sleep=500
'стереть строку
Echo "-" 
Sleep=500
'стереть строку


(-видел такую индикацию где-то в cmd. Красиво.)

В идеале, если бы процент заголовка "Content-length" считался.

Буду рад любой помощи и идеям в рамках стандартных, системных,(без AutoIt или подобным).
Спасибо!
...
Рейтинг: 0 / 0
VBScript + XMLHTTP: Помогите сделать индикатор скачивания файла из сети.
    #38826736
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаждущий знанийКак отправить символ в строку переписывая предыдущий?никак
Жаждущий знанийВ идеале, если бы процент заголовка "Content-length" считался.XMLHTTP не умеет этого.

единственный вариант — Set IE = CreateObject("InternetExplorer.Application")
открыть осла, загрузить анимированный гиф и любоватся.
в цикле do loop проверять, не закрыли ли осла, и открывать заново, если что.
...
Рейтинг: 0 / 0
VBScript + XMLHTTP: Помогите сделать индикатор скачивания файла из сети.
    #38826762
AntonariyЖаждущий знанийКак отправить символ в строку переписывая предыдущий?никак
Жаждущий знанийВ идеале, если бы процент заголовка "Content-length" считался.XMLHTTP не умеет этого.

единственный вариант — Set IE = CreateObject("InternetExplorer.Application")
открыть осла, загрузить анимированный гиф и любоватся.
в цикле do loop проверять, не закрыли ли осла, и открывать заново, если что.

objXMLHTTP.responseBody - как я понимаю это же байты. Только не понятно, как отображаются, сразу все или по мере закачки
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
        objXMLHTTP.Open "GET", "url", True

        Call objXMLHTTP.send
sleep=100
        lLenthFile = objXMLHTTP.getResponseHeader("Content-Length")
        Debug.Print objXMLHTTP.getAllResponseHeaders()
sleep=200
        'On Error Resume Next
        Do
        Sleep 10
        Debug.Print UBound(objXMLHTTP.responseBody); ; "/" ; ; lLenthFile

    Loop While objXMLHTTP.readyState <> 4
...
Рейтинг: 0 / 0
VBScript + XMLHTTP: Помогите сделать индикатор скачивания файла из сети.
    #38826841
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаждущий знанийсразу все+1

пока все не докачается, responseBody будет пустым.
...
Рейтинг: 0 / 0
VBScript + XMLHTTP: Помогите сделать индикатор скачивания файла из сети.
    #38830857
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WScript.CreateObject("Microsoft.XMLHTTP") - а эта хрень имеет какое-то отношение к браузерному XHR? В обычном браузерном XHR есть прогресс (сколько передано/закачано) и на upload и на download.
...
Рейтинг: 0 / 0
VBScript + XMLHTTP: Помогите сделать индикатор скачивания файла из сети.
    #38831085
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_stWScript.CreateObject("Microsoft.XMLHTTP") - а эта хрень имеет какое-то отношение к браузерному XHR?Он в ie использовался, пока не появился встроенный xhr. В XMLHTTP нет прогресса.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / VBScript + XMLHTTP: Помогите сделать индикатор скачивания файла из сети.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]