ATLVisual C++ 7.1Visual C++ 8.0Visual Studio 6Visual C++ 7.0Visual Basic 6Windows 2000Visual C++ 6.0Windows XPMFCIntermediateDevVisual StudioWindowsC++Visual Basic
提供 Internet 下载实用程序的 COM 组件





4.00/5 (5投票s)
2002年12月23日
2分钟阅读

72293

1747
一个用 C++ 编写的 COM 组件,提供多路并行下载、Internet 缓存访问、URL 和路径解析等功能。

引言
一年前我想创建一个大型多文件下载程序。我在 VB6 中实现了可视化界面,并在 ATL COM 组件中实现了实际的下载功能。我使用了 URL monikers,特别是 CBindStatusCallback ATL 类来实现下载。不幸的是,URL monikers 的文档很差,我只触及了该主题的表面。我还没有成功实现下载的暂停和恢复。该组件还包含其他一些用于缓存访问、URL 和路径解析的有用函数。我希望您觉得它有用。上图显示了一个小型 VB6 程序,它同时从 Microsoft download 站点下载 3 个文件。
下面是接口方法的简要列表。在源文件 zip 文件中,您还会找到一个 HtmlHelp,这是使用我的“自动 HTMLHelp 文档”工具创建的。
对象 AsyncDownloader
| 接口 IAsyncDownloader | ||
| 名称 | 类型 | 解释 | 
|---|---|---|
| AbortDownload | 方法 | 中止下载(无效) | 
| ConcurrentDownloads | 属性 Get/Let | 并发下载数量 | 
| DownloadedBytes | 属性 Get | 已下载字节数 | 
| MaxBytes | 属性 Get | 最大下载字节数 | 
| RequestDownload | 方法 | 请求下载 | 
| ResumeDownload | 方法 | 恢复下载(无效) | 
| 状态 | 属性 Get | 下载状态(进行中等) | 
| SuspendDownload | 方法 | 暂停下载(无效) | 
| 事件接口 _IAsyncDownloaderEvents | ||
| OnData | 事件 | 数据已到达 | 
| OnFinish | 事件 | 下载完成 | 
| OnStart | 事件 | 下载开始 | 
对象 CacheUtils
| 接口 ICacheUtils | ||
| 名称 | 类型 | 解释 | 
|---|---|---|
| CrackUrl | 方法 | 将 URL 解析为 UrlComponents 对象(主机、路径等) | 
| DownloadToFile | 方法 | 将 URL 下载到本地文件 | 
| MakeSureDirectoryPathExists | 方法 | 确保目录路径存在 | 
| PathCombine | 方法 | 组合路径 | 
| SaveURLfileFromCacheToLocalfile | 方法 | 将 URL 文件从缓存保存到本地文件 | 
| UrlCombine | 方法 | URL 组合 | 
对象 UrlComponents
| 接口 IUrlComponents | ||
| 名称 | 类型 | 解释 | 
|---|---|---|
| ExtraInfo | 属性 Get/Let | ExtraInfo | 
| FullURL | 属性 Get/Let | FullURL | 
| HostName | 属性 Get/Let | HostName | 
| 密码 | 属性 Get/Let | 密码 | 
| 端口 | 属性 Get/Let | 端口 | 
| Scheme | 属性 Get/Let | Scheme | 
| UrlPath | 属性 Get/Let | UrlPath | 
| UserName | 属性 Get/Let | UserName | 
对象 PathUtils
| 接口IPathUtils | ||
| 名称 | 类型 | 解释 | 
|---|---|---|
| GetFullPathName | 方法 | 获取完整路径名 | 
| GetModuleFileName | 方法 | 获取模块文件名 | 
| GetShortPathName | 方法 | 获取短路径名 | 
| MakeSureDirectoryPathExists | 方法 | 确保目录路径存在 | 
| PathCanonicalize | 方法 | 路径规范化 | 
| PathCombine | 方法 | Path Combine | 
| PathCommonPrefix | 方法 | 路径公共前缀 | 
| PathFindFileName | 方法 | 查找路径文件名 | 
| PathIsDirectory | 方法 | 路径是目录 | 
| PathIsFileSpec | 方法 | 路径是文件说明 | 
| PathIsPrefix | 方法 | 路径是前缀 | 
| PathIsRelative | 方法 | 路径是相对的 | 
| PathIsRoot | 方法 | 路径是根 | 
| PathIsSameRoot | 方法 | 路径具有相同根 | 
| PathIsUNC | 方法 | 路径是 UNC | 
| PathIsURL | 方法 | 路径是 URL | 
| PathMatchSpec | 方法 | 路径匹配说明 | 
| PathQuoteSpaces | 方法 | 路径引用空格 | 
| PathRelativePathTo | 方法 | 路径相对于... | 
| PathRemoveArgs | 方法 | 路径移除参数 | 
| PathRemoveBackslash | 方法 | 路径移除反斜杠 | 
| PathRemoveBlanks | 方法 | 路径移除空格 | 
| PathRemoveExtension | 方法 | 路径移除扩展名 | 
| PathRemoveFileSpec | 方法 | 路径移除文件名 | 
| PathRenameExtension | 方法 | 路径重命名扩展名 | 
| UrlCombine | 方法 | URL 组合 | 
