Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: API - монстры ОТЗОВИТЕСЬ!!! Добавлено: 10.12.02 21:54  

Автор вопроса:  EROS

Господа!

Вот нашел в Инете одну шикарнейшую функцию для скачивания файла
с массой преимуществ и ОДНИМ недостатком

Взгляните на код...

***********************************************************************
Option Explicit

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
                            "URLDownloadToFileA" (ByVal pCaller _
                            As Long, ByVal szURL As String, ByVal _
                            szFileName As String, ByVal dwReserved _
                            As Long, ByVal lpfnCB As Long) As Long

Private Function DownloadFile(FromPathName As String, ToPathName _
                                As String) As Long
  Screen.MousePointer = vbHourglass
  DownloadFile = URLDownloadToFile(0, FromPathName, ToPathName, 0, 0)
  Screen.MousePointer = vbDefault
End Function

Private Sub Command1_Click()
  Dim Result As Long
  Result = DownloadFile("http://lidergroup.fromru.com/blank/blankdbver.txt",  "C:\temp.txt")
  Debug.Print Result
End Sub

***********************************************************************

Преимущества:
- не требует дополнительных компонентов
- чрезвычайно проста в использовании и очень мала
- ждет окончания загрузки
- дает возможность самостоятельно указывать где и под каким именем
  сохранять скачанный файл
- при отсутствии связи САМОСТОЯТЕЛЬНО вызывает окно "Установка удалённого соеденения"

НО!!!!!!!
Беда заключается в том, что это окно вызывается только 1 раз-первый!!!
А если user по каким-то причинам отменил установку связи, то потом хоть
занажимайся на кнопку - функция возвращает один и тот же код  -2146697211
В случае удачного скачивания возвращает 0.
Чтобы функция снова вызвала окно неоходимо закрывать приложение и запускать
 его по новой. Если же программа исполняется в среде разработки, то необходимо
перегружать сам Бэйсик.

В связи с этим у меня возник вопрос!

- можно-ли эту функцию реинициализировать? произвести сброс  её параметров
  чтобы она "думала", что её запускают в первый раз!
- что за код она мне возвращает, и как узнать остальные коды и что они означают ?...

 API-монстры  ОТЗОВИТЕСЬ!!!

Заранее всем спасибо. EROS. eros@sandy.ru

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Zeus



ICQ: 161801353 

Вопросов: 63
Ответов: 220
 Web-сайт: apirussia.by.ru
 Профиль | | #1
Добавлено: 10.12.02 23:27

А если использовать функции GetLastError и SetLastError для перехвата ошибок?

Типа как в этом примере:

Const FORMAT_MESSAGE_ALLOCATE_BUFFER = &H100
Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Const LANG_NEUTRAL = &H0
Const SUBLANG_DEFAULT = &H1
Const ERROR_BAD_USERNAME = 2202&
Private Declare Function GetLastError Lib "kernel32" () As Long
Private Declare Sub SetLastError Lib "kernel32" (ByVal dwErrCode As Long)
Private Declare Function FormatMessage Lib "kernel32" Alias _
    "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, _
    ByVal dwMessageId As Long, ByVal dwLanguageId As Long, _
    ByVal lpBuffer As String, ByVal nSize As Long, _
    Arguments As Long) As Long
Private Sub Form_Load()
    Dim Buffer As String
    ' Создаёт в буфере строку
    Buffer = Space(200)
    ' Устанавливает номер ошибки
    SetLastError ERROR_BAD_USERNAME
    ' Изменяет строку сообщения
    FormatMessage FORMAT_MESSAGE_FROM_SYSTEM, _
       ByVal 0&, GetLastError, LANG_NEUTRAL, _
       Buffer, 200, ByVal 0&
    ' Выдаёт сообщение
    MsgBox Buffer
End Sub

Ответить

Номер ответа: 2
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #2
Добавлено: 11.12.02 22:27
Странно, а у меня диалог "Установка связи" вообще не выдаёт.
Попробуй такой код
call shell("rundll rnaui.dll,RnaDial ИмяСоединения",1)
Правда тебе сначала нужно узнать имя соединения.

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 12.12.02 14:51

В ходе экспериментов выяснилась одна особенность этой функции. Ты наверняка заметил такую вещь, что при запуске IE (браузера) иногда появляется диалог (не помню названия,кажется "Работа в Автономном режиме") с двумя кнопками "Подключиться" и "Автономно".Так вот если нажать "Автономно", то функция вообще вообще не вызывает окна "Установка удаленного соеденения", и наоборот.. Если нажать "подключиться", то она(функция) самостоятельно пытается установить связь.Так вот, для решения моей проблемы необходимо перед вызовом этой функции каким-то образом программно "нажать" кнопку "подключиться" и тогда все будет работать...

Веротно, где-то хранится информация о том, в каком режиме работает компьютер, в автономном или нет.(может в реестре, может сообщение системы,может какой-то флаг, не знаю)

Вообщем надо заставить машину думать, что она НЕ в Автономном режиме...

А вот как это сделать,и где храниться эта информация... Вот в чем вопрос....

 Что касается библиотеки RNAUI.DLL..... Тут одни проблемы и не у меня одного... Этот пример-НЕ РАБОТАЕТ!!! Чего я только не делал. Я экспериментировал с RNAUI от разных виндов( 98, Ме, в 2000 её нет)- и ничего у меня не вышло.

Ответить

Номер ответа: 4
Автор ответа:
 -=Gork=-



ICQ: 9993198 

Вопросов: 8
Ответов: 229
 Web-сайт: olegm.wz.cz/
 Профиль | | #4
Добавлено: 12.12.02 15:53

Дык RegMonitor'ом проследи че он с регистри делает кода жмешь кнопарь. Могешь и файлы проверить что он изменяет, хотя я думаю эта штука лежит в регистри.

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 12.12.02 19:56

!-=Gork=-!

У меня с RegMonitor'ом ничего не вышло... Ума не хватает...

Может поможешь... где этот флаг в регистри находится...

Заранее спасибо.

Ответить

Номер ответа: 6
Автор ответа:
 Zeus



ICQ: 161801353 

Вопросов: 63
Ответов: 220
 Web-сайт: apirussia.by.ru
 Профиль | | #6
Добавлено: 12.12.02 20:11
Вообще-то это информация вряд ли в реестре хранится.... Программа подаёт запрос модему, типа спрашивает его, в онлайне он или нет... если нет, то начинает коннектиться.
но провять дома времени нет.. найду -=- напишу что надо....

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 13.12.02 01:54
Дело вот в чем при скачивании по протоколу HTTP, все нормально...(сохраняет где я укажу), я наугад подставил в неё ftp-адрес - РАБОТАЕТ!!!. Но вызывает диалог "Сохранение файла", хотя в коде указано куда и под каким именем сохранить, а мне этот диалог не нужен... КАк от него избавиться?

Ответить

Номер ответа: 8
Автор ответа:
 -=Gork=-



ICQ: 9993198 

Вопросов: 8
Ответов: 229
 Web-сайт: olegm.wz.cz/
 Профиль | | #8
Добавлено: 13.12.02 14:43

Этот Ослик у меня при ентом нажатии ломится че-то на 2 с пловониной тысяци ключей.. там я нихрена не нашел.. Если есть эта штука в регистри, то тогда можно сделать слепок регистри, а потом сравнить после нажатия Offline. Для этого специальная прога была.. поищу ща..

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам