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 组合 |