эта функция предназначена для скачивания небольших файлов. например, скачать баннер или маленькую картинку с какогото сайта. лучше качай через винсок. правда потрудиться придётся, но зато всё нормально будет: и скорость скачивания, и зависать не будет. ну а если тебе приспичило качать через апи ф-цию, то в проге помимо главного экзешника создай что-то типа download.exe. в этой проге обрабатывай коандную строку (Command). Для того чтобы потом скачать файл, в своей главной программе вызови этот Download.exe с необходимыми параметрами командной строки. Например, это у тебя будет в коде проги Download.exe :
Private Sub Form_Load()
dim URL as string
URL = Command
DownloadFile URL, "куда скачать"
End
End Sub
А в главной проге будет так:
Private Sub cmdDownload_Click()
Shell App.path & "\download.exe " & txtURL.text , vbHide
End Sub
Тогда зависнет прога Download.exe , а главное окно твоей главной проги будет нормально. Для того, чтобы юзер понял, что файл скачался, в коде download.exe до начала скачивания создай какой нибудь файл, а после скачивания удали. А главная прога будет проверять существует ли файл. Если не существует, значит файл скачался. Можешь даже реестр использовать, и оставить какую нибудь метку. Например, файл скачался успешно или нет. Можешь сделать кнопку "Отмена". При клоике на неё вызывай TerminateProcess или какую нибудь другую ф-цию чтобы убить процесс Download.exe (Можно и SendMessage использовать, ведь тебе будет известно имя окна).
В принципе, можно сделать и скорость скачивания, но проблема в том, как узнать размер файла, который ты скачиваешь.
вот, попробуй этот пример:
www.v-adix.narod.ru/files2/multidownloader.zip
не помню как он качает, главное что качает. может поможет...