迅雷API:实现文件下载

今天到迅雷公司的SDK文档网站上逛了逛,竟然发现它们已经提供了完备的API接口,我心中不禁大喜,但是SDK资料中的原版开发文件已经很难找到了,幸运的是我在github上搜索到了所需的文件,在这里我已经打包完毕,点击 这里 下载。
在这个SDK中,包含有.h头文件,lib库文件,dll动态链接库文件,迅雷公司,我们首先用VC++提供的Depends工具查看一下dll文件中的函数列表。

从这个函数列表图片,可以看出SDK中提供的功能还是很全面的,对于下载功能的封装还是挺让人满意。下面我来按照代码执行顺序对函数进行相关的解释
| XLInitDownloadEngine | BOOL __stdcall XLInitDownloadEngine(); | 初始化迅雷下载引擎。 |
| XLURLDownloadToFile | ![]() |
根据URL开启下载。 |
| XLQueryTaskInfo | ![]() |
查询指定任务当前状态。 |
| XLStopTask | VOID __stdcall XLStopTask(LONG lTaskId); | 停止指定任务(必须)。 |
| XLUninitDownloadEngine | BOOL __stdcall XLUninitDownloadEngine(); | 进行资源回收操作。 |
上面的函数是一个完整的工作流程,下面我们继续把其他函数做一下介绍。
| XLPauseTask | DWORD __stdcall XLPauseTask(LONG lTaskId, LONG & lNewTaskId); | 暂停指定任务。 |
| XLContinueTask | DWORD __stdcall XLContinueTask(LONG lTaskId); | 根据编号继续下载。 |
| XLContinueTaskFromTdFile | ![]() |
根据TD文件继续下载。 |
| XLGetErrorMsg | ![]() |
将错误码对应的错误消息拷贝至指定的缓冲区。 |
特殊参数类型 LONG &:直接定义LONG类型变量,传进函数即可。
下面我对样例代码进行一些解释
//VS2008 UNICODE
#include "stdafx.h"
#include <stdio.h>
#include "stdlib.h"
#include <windows.h>
#include "XLDownload.h"
#include "XLError.h"
#pragma comment(lib, "XLDownload.lib") // 唯一的应用程序对象 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
// 1、初始化下载引擎
if ( FALSE == XLInitDownloadEngine() )
{
printf("Initialize download engine failed.\n");
return ;
}
// 2、启动新任务
// PS:如果链接无法通过,请把工程属性“将wchar_t设置为内置类型 (/Zc:wchar_t)”设置为Yes
LONG lTaskId = ;
DWORD dwRet = XLURLDownloadToFile( //这里开始下载,迅雷把下载和状态查询进行了分离,创新之处
_T("d:\\notepad++.exe"),
_T("http://dlsw.baidu.com/sw-search-sp/soft/cc/13478/npp.6.7.4.Installer.1421032427.exe"),
_T(""), lTaskId); printf("Begin download file.\n"); // 3、查询任务状态
do
{
::Sleep();
system("cls"); //windows 清屏
ULONGLONG ullFileSize = ;
ULONGLONG ullRecvSize = ;
LONG lStatus = -; dwRet = XLQueryTaskInfo(lTaskId, &lStatus, &ullFileSize, &ullRecvSize);
if ( XL_SUCCESS==dwRet )
{
// 输出进度信息
if ( != ullFileSize )
{
double douProgress = (double)ullRecvSize/(double)ullFileSize;
// printf("%.2lfMB",(double)ullRecvSize/8/1024/1024);
douProgress *= 100.0;
printf("Download progress:%.2f%% %.2lfMB\n", douProgress,(double)ullRecvSize//);
}
else
{
printf("File size is zero.\n");
} if ( enumTaskStatus_Success==lStatus )
{
printf("Download successfully.\n");
break;
} if ( enumTaskStatus_Fail==lStatus )
{
printf("Download failed.\n");
break;
}
}
} while( XL_SUCCESS==dwRet ); // 4、无论是否下载成功,都必须调用XLStopTask
XLStopTask(lTaskId); // 5、释放资源
XLUninitDownloadEngine();
return ;
}
迅雷API:实现文件下载的更多相关文章
- 迅雷 API 接口说明文档 -调用迅雷自动下载
我们可以利用迅雷提供的开放API接口来自动下载文件.详细的接口说明大家可以看下面的. 先要说明一下的就是 迅雷的API接口是用 .com 来调用的 首先就是脚本了,各种语言写法不同,我这里提供用vbs ...
- ASP.NET Web API编程——文件下载
断点续传基本原理 HTTP协议中与断点续传相关的HTTP头为:Range和Content-Range标头,断点续传实现流程: 1)客户端请求下载一个文件,文件的总长度为n:已经下载了一部分文件,长度为 ...
- ASP.NET Web API 2 之文件下载
Ø 前言 目前 ASP.NET Web API 的应用非常广泛,主要承载着服务端与客户端的数据传输与处理,如果需要使用 Web API 实现文件下载,该 实现呢,其实也是比较简单,以下示例用于下载安 ...
- 解析大型.NET ERP系统架构设计 Framework+ Application 设计模式
我对大型系统的理解,从数量上面来讲,源代码超过百万行以上,系统有超过300个以上的功能,从质量上来讲系统应该具备良好的可扩展性和可维护性,系统中的功能紧密关联.除去业务上的复杂性,如何设计这样的一个协 ...
- NET ERP系统架构设计
解析大型.NET ERP系统架构设计 Framework+ Application 设计模式 我对大型系统的理解,从数量上面来讲,源代码超过百万行以上,系统有超过300个以上的功能,从质量上来讲系统应 ...
- [No000079]罗辑思维2016.1.2日前的所有每日语音,python3做的网络爬虫
源码地址:https://github.com/charygao/Download_the_LouJiSiWei 写过很久了,vision1.0里有不少bug,今天重新整理修改了一下,运行了一下,2个 ...
- gof设计模式回顾
gof23根据讲师学习笔记回顾: 1.gof:Gang of Four;叫grasp更具有针对性,解决具体的问题; ---------------------总共分为三大类: ---------创建型 ...
- Alamofire 4.0 迁移指南
Alamofire 4.0 是 Alamofire 最新的一个大版本更新, 一个基于 Swift 的 iOS, tvOS, macOS, watchOS 的 HTTP 网络库. 作为一个大版本更新, ...
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染
对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到 ...
随机推荐
- Oracle_Q&A_01
Step01: SHOW USER DESCRIPTION Step02:QUESTION & ANSWER --查询员工姓名和职位字数相等的员工 SELECT * from emp wher ...
- [开源夏令营][四] Docker remote API 之 镜像篇
列出镜像 列出镜像,有两个可选參数,一个是all,一个是filter,all可选值有,0/False/false,1/True/true,默觉得0:filter是一个包括一个过滤对象的json,形式如 ...
- Linux下配置免安装版Tomcat
一.下载免安装版Tomcat 打开Tomcat主页http://tomcat.apache.org/,下载Tomcat免安装版,我这里下载的是apache-tomcat-7.0.2.tar.gz. 二 ...
- NS2仿真:两个移动节点网络连接及协议性能分析
NS2仿真实验报告2 实验名称:两个移动节点网络连接及协议性能分析 实验日期:2015年3月9日~2015年3月14日 实验报告日期:2015年3月15日 一.实验环境(网络平台,操作系统,网络拓扑图 ...
- BFC——块级格式上下文
BFC中的B指的是block,对应的还有IFC,I指的是inline.对于BFC的理解可以参考层叠上下文.页面中,盒子的排布规则,是生效在对应的BFC中.两个BFC中的布局互不影响.页面的本身的根本身 ...
- for语句应用:乘法表
乘法表: for语句应用: 1: 2: public class chengfa { 3: public static void main(String[] args) { 4: //int i; 5 ...
- 网络NSURLSession
简单下载图片 dispatch_queue_t queue =dispatch_queue_create(NULL, DISPATCH_QUEUE_CONCURRENT); dispatch_asyn ...
- 解决MacOS Terminal打开慢的问题
用了Mac有一段时间了,突然发现Terminal打开奇慢,每次打开都显示logining...,打开大概要个五六秒的时间,以前打开都是瞬间打开的啊,这对于我们这种追求速度的程序员怎么受的了呢.开始一直 ...
- MVC 4.0项目部署在IIS上无法浏览的解决方案
本文属于原创,转载请标明出处! MVC 4.0发布后部署到IIS上可能出现无法浏览的问题,浏览器报403的错误. 解决方法是:只需在web.config配置文件里的<system.webServ ...
- java鼠标与键盘事件监听
package cn.stat.p3.windowdemo; import java.awt.Button; import java.awt.FlowLayout; import java.awt.F ...



