Заинтересовала меня тема ТС, т.к. я в своё время делал простенький download manager на Delphi с помощью компонентов Indy и Synapse. Решил попробовать сделать аналогичное на
. Но не тут-то было. В сообщении выше я немного поспешил, как оказалось, IE'шный компонент WebBrowser не подходит для скачки файлов. Во-первых, выдаёт каждый раз диалоговое окно для сохранения файла и весь процесс скачки выполняется в нём. Это никак не настроить. Во-вторых, грузит установленные плагины/аддоны, такие как Flash Player и Adobe PDF, в результате pdf файл открывается в Adobe PDF Reader'е прямо в окне компонента. И контроль над загрузкой файла в
уже не получить. И в-третьих, индикатор прогресса меняется при загрузке каждого элемента, если это web-страница, то он будет скакать при загрузке каждой картинки, скрипта, html, css.
На удивление, никаких нормальных решений для скачки с прогресс баром для
нет. Попадались старые
OpenG HTTP, которые уже не работают, так и не понял, что с ними не так. Есть дополнение Internet Toolkit для LabVIEW 2011/2012, построенное на TCP инструментах
. Посмотрев на внутренности, я решил ничего там не менять, ибо муторно, долго и не факт, что заработает. Ещё пара решений с форума NI тоже оказалась на TCP
, и тоже корректно не работала. А если создавать download manager на TCP, на это могут уйти дни, а то и недели.
Поискав, наткнулся на консольную утилиту
WGet. Вроде бы, всё что нужно, присутствует. И файлы способна качать, и выводит прогресс. Однако вывод идёт в консоль, а библиотек к ней нет. Так что ещё в LabVIEW нужно с консолью взаимодействовать - опять дополнительные сложности. Я почти сдался, подумав, что некоторые вещи на LabVIEW не реализовать. То, что в Delphi или C/C++ делалось парой строк кода, здесь оказалось невозможным.
И вдруг наткнулся на
решение на .NET. Довольно несложный код, и я набросал в
его за пару часов. Получился он малось вытянутым в графическом плане, но довольно функциональным. Что интересно, всё сразу заработало после нажатия Run. Файл сразу же начал загружаться и прогресс бар стабильно отобразил полосу загрузки. В качестве иллюстрации скрин панели:
Так что, можно сказать, задача оказалась выполнена на 100%
И как вывод - даже в
нет невозможных вещей, нужно лишь приложить достаточно усилий.
P.S. Тестовые файлы разных размеров для проверки закачки можно взять
здесь.