powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Загрузить файл через IE, дождаться завершения и отловить если что ошибки
9 сообщений из 9, страница 1 из 1
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
    #36998435
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну собственно, задачка:
1) Загрузить файл из указанного адреса в указанное место (напрашивается %temp%).
2) Если ошибка, сообщить об этом юзеру
3) Если OK, запустить на исполнение

Чего хочу и не хочу
1) Обязательно стандартное окно загрузки в стиле тек. OS, т.е. IE -никаких самопалов.
2) Никаких OCX, Internet Controls т.е. без VB-наворотов

В каких ситуациях
1) Загрузка и установка новой версии программы
2) Загрузка и запуск .NET инсталлера при необходимости
(вариант с . NET 3.5 несмотря на компактный "интернет-инсталлер" слишком громоздский по объему закачки/установки и для меня избыточный, а скажем .NET 2.0 SP1-2 -только полные версии и включать их в дистрибутив очень громоздко, а закачать при необх. целиком в самый раз).

Состряпал пока примитивный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub cmdGet_Click()
    Dim TheBrowser 'As InternetExplorer
    MsgBox "Run App after downloading"
On Error GoTo nodown
    Set TheBrowser = CreateObject("InternetExplorer.Application")
    'TheBrowser.Visible = True
    TheBrowser.Navigate "http://www.myproga.com/newversion.zip"
nodown:
    Set TheBrowser = Nothing
End Sub

Ну, плюс что никаких OCX, ибо объект берется "из системы".
On Error естественно отлавливает только невозможность создать объект InternetExplorer, что малореально.

отсутствие Visible нужно чтоб не показывать окно браузера.
Стандартных ошибок оно не отлавливает
1) нет коннекта к интернету
2) файл недоступен (а провайдер в этом случае подсунет свою страничку)
ну и т.п.
причем visible=false в случае ошибки еще и останется в процессах как IExplorer.
Ну, допустим, в случае "Загрузка новой версии" еще куда ни шло, т.к. коннект с интернетом до этого проверяется более грамотным кодом и предложения загрузить не поступит, если короткий инф-файл не считался из интернета...

В общем по большому счету идея правильная, реализация никакая. Какие рекомендации?
Командная строка типа
shellandcontinue(rundll32 bla-bla-bla ...) кстати вполне бы устроила...
...
Рейтинг: 0 / 0
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
    #37127103
microdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.vbaexpress.com/forum/showthread.php?t=29333

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Option Explicit 
 
Private Declare Function URLDownloadToFileA Lib "urlmon" (ByVal pCaller As Long, _ 
ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, _ 
ByVal lpfnCB As Long) As Long 
 
Private Sub Example() 
     'From All API
     'example by Matthew Gates (Puff0rz@hotmail.com)
    DownloadFile _ 
    "http://www.vbaexpress.com/forum/attachment.php?attachmentid=2305&d=1258660962", _ 
    "C:\Test\TestDownload.zip" 
End Sub 
 
Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean 
    Dim lngRetVal As Long 
    lngRetVal = URLDownloadToFileA( 0 , URL, LocalFilename,  0 ,  0 ) 
    If lngRetVal =  0  Then DownloadFile = True 
End Function
...
Рейтинг: 0 / 0
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
    #37127256
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
microdin,
вы меня конечно очень обрадовали (хоть один ответ ...через 2,5 месяца!)
Но как насчет?
Дмитрий771) Обязательно стандартное окно загрузки в стиле тек. OS, т.е. IE -никаких самопалов.
Если б вы сделали хоть мало-мальский поиск по моим сообщениям, вы бы без труда поняли, что URLDownloadToFileA мне известна (причем давно), а еще мне известны куча других(гораздо более корректных!) методов загружать/читать файлы.
Только вот "Шариков" в данной теме интересуется не
Как загрузить/прочитать файл из инета (хоть как-нибудь)?
А
Как сделать это оригинально? Причем именно так как хочет тов.Шариков:
"через IE, дождаться завершения и отловить если что ошибки"
Для того чтоб понять что именно нужно(визуально иметь) , достаточно просто выполнить код, мной же приведенный выше.
Как вы понимаете, этот код делает только "через IE" но не делает "дождаться завершения и отловить если что ошибки".
...
Рейтинг: 0 / 0
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
    #37127599
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77, тот-же IE зачастую недокачивает файл, т.е. загружает, и в какой-то момент рапортует что все скачал, хотя на
самом деле скачано может быть какая-то часть файла. Из-за этих приколов я стараюсь не использовать браузеры для закачек.
А всегда ставлю и использую Download Master, не сочти за рекламу.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
    #37128330
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносДмитрий77, тот-же IE зачастую недокачивает файл, т.е. загружает, и в какой-то момент рапортует что все скачал, хотя на самом деле скачано может быть какая-то часть файла.
Сии глюки я не отрицаю, но они скорее связаны с глюками всяких там серверов, с которых качаем.
IE действительно был не удобен в конце 90-х (лично я пользовался getwrite), при некачественном телефонном интернете. Но в настоящий момент серьезных проблем с закачкой даже 2GB образов дисков с того же Microsoft через стандартный интерфейс IE не возникает. Более того все "иные методы" мной тут недавно пережеванные основаны на том же IE, пусть без стандартного окна закачки о котором собственно и речь в данной теме.

И даже примитивный код (без обработки ошибок) мной приведенный я уже использую в 2-х местах программы ибо это "красиво", а вероятность глюков крайне низка (у меня там еще неявная перепроверка через предварительный "скрытый download короткого файла с того же сервера" одним из "иных скрытых методов") и к критическим ошибкам точно не приведет (если например файла/коннекта к файлу нет и откроеся IE с visible=false).

А по поводу всяких там сторонних прог для закачки, браузеров типа firefox/mozila и т.п. скажу так:
Коль скоро вы выбрали VB6, вы просто по определению обязаны любить и уважать продукцию фирмы Microsoft, OS Windows с "родными компонентами", IE и все что с этим связано. Иной подход может означать исключительно "плевать в колодец из которого пьешь", кричать скажем "IE==Г" может только новичок с завышенным самомнением и повторяющий общие слова людей некомпетентных.

К Вам Игорь, эти комментарии понятно не относятся. Это так, к слову... Просто не могу спокойно смотреть на людей, которые используют BAT вместо Outlook Express и с пеной у рта говорят про дыры IE и преимущества Mozil-ы. Потом эти люди иногда интересуются: а че это я help не могу прочесть к куче прог? Ой, блин, опять ниче не работает, нады винды переустанавливать ну и т.п.

В конце концов, есть платформенно-независимый C/C++ (естественно про WIN-API и про Visual Studio забудьте), специально для "правильного" подхода.
...
Рейтинг: 0 / 0
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
    #37128441
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не стандартный диалог закачки файлов у IE, наверное вы имеете ввиду, а добычный диалог выбора сохранения в файл из ОС. так используйте его сами, а потом инициируйте закачку с указанного адреса любым своим способом.

PS
IE до сих пор глючно качает файлы, стараюсь им не пользоваться в этих целях.
...
Рейтинг: 0 / 0
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
    #37128527
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneне стандартный диалог закачки файлов у IE, наверное вы имеете ввиду, а добычный диалог выбора сохранения в файл из ОС.
Нет, в виду имелся именно "диалог скачки" (когда уже качает), а не общий диалог Open/Save (который кстати желательно иметь возможность пропустить, задав имя файла из программы и сохранить скажем в %temp%, откуда потом напр. запустить, зная имя сохранения).
...
Рейтинг: 0 / 0
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
    #37128930
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Konst_Oneне стандартный диалог закачки файлов у IE, наверное вы имеете ввиду, а добычный диалог выбора сохранения в файл из ОС.
Нет, в виду имелся именно "диалог скачки" (когда уже качает), а не общий диалог Open/Save (который кстати желательно иметь возможность пропустить, задав имя файла из программы и сохранить скажем в %temp%, откуда потом напр. запустить, зная имя сохранения).

если именно диалог , который показывает трансфер, то это кастомный диалог самого IE, а не ОС
...
Рейтинг: 0 / 0
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
    #37128984
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneесли именно диалог , который показывает трансфер, то это кастомный диалог самого IE, а не ОС

Естественно, и я не утверждаю обратного. Хотя, с другой стороны, без IE -ОС не жилец.
Собсвенный кастомный диалог с progress-bar и картинками я почти сделал через "NetGrab"-метод
/topic/814714&hl=
но когда уже был почти готов, отказался от него в пользу трех строчек кода выше,
справедливо осознав что потенциальных глюков с моим диалогом будет гораздо больше чем с описанными выше не очень критичными для выполнения треб. задачи проблемами.

Там где надо аккуратно, предпочел все же стандартный Microsoft Internet Transfer Control 6.0 (SP6) OCX, с предв. проверкой "автономности" режима IE.
Собственно все мотивы и рассуждения в тех топиках описаны. Если что-то может быть интересно сейчас, то только ответ на именно поставленный в этом топике вопрос. Сами понимаете во все те дебри лишний раз без необх. лезть неохота.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Загрузить файл через IE, дождаться завершения и отловить если что ошибки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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