
Introduction
A year ago I wanted to create a large multi-download program. I implemented the
visual interface in VB6 and the actual download functionality in an ATL COM
component. I used the URL monikers and specifically the CBindStatusCallback ATL
class to implement downloading. Unfortunately the documentation for URL monikers
is poor and I have only scratched the surface of this subject. I have not yet succeeded
in
implementing suspend and resume of downloads. The component also includes some
other useful functions for cache access, URL and resolving of paths. I hope you'll
find it useful. The figure above shows a small VB6 program that simultaneously downloads 3
files from the Microsoft download
site.
Below there is a brief listing of the interface methods. In the source code zip
file,
you'll find also an HtmlHelp, created with my 'Automatic
HTMLHelp Documentation' tool.
Object AsyncDownloader
| Interface IAsyncDownloader |
| Name |
Type |
Explanation |
| AbortDownload |
Method |
Abort downloading (does not work) |
| ConcurrentDownloads |
Property Get/Let |
Number of concurrent downloads |
| DownloadedBytes |
Property Get |
Downloaded bytes yet |
| MaxBytes |
Property Get |
Maximum bytes to download |
| RequestDownload |
Method |
Request Download |
| ResumeDownload |
Method |
Resume Download (does not work) |
| Status |
Property Get |
Status of download (in progress, etc.) |
| SuspendDownload |
Method |
Suspend Download (does not work) |
| Event Interface _IAsyncDownloaderEvents |
| OnData |
Event |
Data arrived |
| OnFinish |
Event |
Finished downloading |
| OnStart |
Event |
Started downloading |
Object CacheUtils
| Interface ICacheUtils |
| Name |
Type |
Explanation |
| CrackUrl |
Method |
Crack Url into a UrlComponents object (host,path,etc.) |
| DownloadToFile |
Method |
Download URL To local file |
| MakeSureDirectoryPathExists |
Method |
Make Sure Directory Path Exists |
| PathCombine |
Method |
Combine paths |
| SaveURLfileFromCacheToLocalfile |
Method |
Save URL file From Cache To Local file |
| UrlCombine |
Method |
Url Combine |
Object UrlComponents
| Interface IUrlComponents |
| Name |
Type |
Explanation |
| ExtraInfo |
Property Get/Let |
ExtraInfo |
| FullURL |
Property Get/Let |
FullURL |
| HostName |
Property Get/Let |
HostName |
| Password |
Property Get/Let |
Password |
| Port |
Property Get/Let |
Port |
| Scheme |
Property Get/Let |
Scheme |
| UrlPath |
Property Get/Let |
UrlPath |
| UserName |
Property Get/Let |
UserName |
Object PathUtils
| Interface IPathUtils |
| Name |
Type |
Explanation |
| GetFullPathName |
Method |
Get Full PathName |
| GetModuleFileName |
Method |
Get Module FileName |
| GetShortPathName |
Method |
Get Short PathName |
| MakeSureDirectoryPathExists |
Method |
Make Sure Directory Path Exists |
| PathCanonicalize |
Method |
Path Canonicalize |
| PathCombine |
Method |
Path Combine |
| PathCommonPrefix |
Method |
Path Common Prefix |
| PathFindFileName |
Method |
Path Find FileName |
| PathIsDirectory |
Method |
Path Is Directory |
| PathIsFileSpec |
Method |
Path Is File Spec |
| PathIsPrefix |
Method |
Path Is Prefix |
| PathIsRelative |
Method |
Path Is Relative |
| PathIsRoot |
Method |
Path Is Root |
| PathIsSameRoot |
Method |
Path Is Same Root |
| PathIsUNC |
Method |
Path Is UNC |
| PathIsURL |
Method |
Path Is URL |
| PathMatchSpec |
Method |
Path Match Spec |
| PathQuoteSpaces |
Method |
Path Quote Spaces |
| PathRelativePathTo |
Method |
Path Relative Path To |
| PathRemoveArgs |
Method |
Path Remove Args |
| PathRemoveBackslash |
Method |
Path Remove Backslash |
| PathRemoveBlanks |
Method |
Path Remove Blanks |
| PathRemoveExtension |
Method |
Path Remove Extension |
| PathRemoveFileSpec |
Method |
Path Remove File Spec |
| PathRenameExtension |
Method |
Path Rename Extension |
| UrlCombine |
Method |
Url Combine |