迅雷API:实现文件下载

article/2025/9/10 15:52:31
迅雷

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

迅雷SDK DLL文件函数列表

      从这个函数列表图片,可以看出SDK中提供的功能还是很全面的,对于下载功能的封装还是挺让人满意。下面我来按照代码执行顺序对函数进行相关的解释

XLInitDownloadEngineBOOL __stdcall XLInitDownloadEngine();初始化迅雷下载引擎。
XLURLDownloadToFile迅雷 SDK XLURLDownloadToFile函数原型根据URL开启下载。
XLQueryTaskInfo迅雷7 SDK XLQueryTaskInfo 函数原型查询指定任务当前状态。
XLStopTaskVOID __stdcall XLStopTask(LONG lTaskId);停止指定任务(必须)。
XLUninitDownloadEngineBOOL __stdcall XLUninitDownloadEngine();进行资源回收操作。

      上面的函数是一个完整的工作流程,下面我们继续把其他函数做一下介绍。

XLPauseTaskDWORD __stdcall XLPauseTask(LONG lTaskId, LONG & lNewTaskId);暂停指定任务。
XLContinueTaskDWORD __stdcall XLContinueTask(LONG lTaskId);根据编号继续下载。
XLContinueTaskFromTdFile迅雷7 SDK XLContinueTaskFromTdFile 函数原型根据TD文件继续下载。
XLGetErrorMsg迅雷7 SDK XLGetErrorMsg 函数原型将错误码对应的错误消息拷贝至指定的缓冲区。

      特殊参数类型 LONG  &:直接定义LONG类型变量,传进函数即可。


      下面我对样例代码进行一些解释

 1 //VS2008 UNICODE
 2 #include "stdafx.h"
 3 #include <stdio.h>
 4 #include "stdlib.h"
 5 #include <windows.h>
 6 #include "XLDownload.h"
 7 #include "XLError.h"
 8 #pragma comment(lib, "XLDownload.lib")
 9 
10 // 唯一的应用程序对象
11 
12 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
13 {
14     // 1、初始化下载引擎
15     if ( FALSE == XLInitDownloadEngine() )
16     {
17         printf("Initialize download engine failed.\n");
18         return 1;
19     }
20     // 2、启动新任务
21     // PS:如果链接无法通过,请把工程属性“将wchar_t设置为内置类型        (/Zc:wchar_t)”设置为Yes
22     LONG   lTaskId = 0;
23     DWORD  dwRet   = XLURLDownloadToFile( //这里开始下载,迅雷把下载和状态查询进行了分离,创新之处
24         _T("d:\\notepad++.exe"), 
25         _T("http://dlsw.baidu.com/sw-search-sp/soft/cc/13478/npp.6.7.4.Installer.1421032427.exe"), 
26         _T(""), lTaskId);
27 
28     printf("Begin download file.\n");
29 
30     // 3、查询任务状态
31     do 
32     {
33         ::Sleep(1000);
34         system("cls"); //windows 清屏
35         ULONGLONG   ullFileSize = 0;
36         ULONGLONG   ullRecvSize = 0;
37         LONG        lStatus     = -1;
38 
39         dwRet = XLQueryTaskInfo(lTaskId, &lStatus, &ullFileSize, &ullRecvSize);
40         if ( XL_SUCCESS==dwRet )
41         {
42             // 输出进度信息
43             if ( 0 != ullFileSize )
44             {
45                 double  douProgress = (double)ullRecvSize/(double)ullFileSize;
46             //    printf("%.2lfMB",(double)ullRecvSize/8/1024/1024);
47                 douProgress *= 100.0;
48                 printf("Download progress:%.2f%%   %.2lfMB\n", douProgress,(double)ullRecvSize/1024/1024);
49             }
50             else
51             {
52                 printf("File size is zero.\n");
53             }
54 
55             if ( enumTaskStatus_Success==lStatus )
56             {
57                 printf("Download successfully.\n");
58                 break;
59             }
60 
61             if ( enumTaskStatus_Fail==lStatus )
62             {
63                 printf("Download failed.\n");
64                 break;
65             }
66         }
67     } while( XL_SUCCESS==dwRet );
68 
69     // 4、无论是否下载成功,都必须调用XLStopTask
70     XLStopTask(lTaskId);
71 
72     // 5、释放资源
73     XLUninitDownloadEngine();
74     return 0;
75 }

 

转载于:https://www.cnblogs.com/corerman/p/4726933.html


http://chatgpt.dhexx.cn/article/AArbgFDJ.shtml

相关文章

spring boot结合FastDFSClient做下载文件注意事项

spring boot结合FastDFSClient做下载文件注意事项 1.后台下载方法走完后&#xff0c;前端页面浏览器一直没出现下载框。 2.ie浏览器兼容问题。 下面的FastDFSClient类依赖fdfsclient-jar-with-dependencies.jar包 下面是后台代码。 // An highlighted block /*** 下载* retu…

导入.dmp文件的操作及一些简单错误解决

一、如何导入.dmp文件 打开cmd&#xff0c;输入命令&#xff1a;imp 用户名/密码实例名 filedmp文件路径 fully 二、出现报错 解决方法&#xff1a; 1、先查看dmp文件的版本号 2、查看当前Oracle的版本 在sqlplus中使用命令&#xff1a;select * from v$version; 效果&#…

VC++实现打开文件和打开所在文件夹的功能(附源码)

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)

迅雷任务出错怎么办,如何解决迅雷任务出错

如果极速迅雷WIN10打不开或者闪退&#xff0c;到文件安装目录的program下&#xff0c;修改thunder.exe 为其他名字即可 例如 迅雷.exe 很多朋友在使用迅雷下载文件时提示“任务出错”这种情况。下面方法可能不适用于所有情况 我的是极速迅雷。 第一种方法 1.打开迅雷&#…

关闭迅雷更新到新版本的提示

每次打开迅雷都会自动检查是否是最新版本&#xff0c;如果不是最新版本&#xff0c;迅雷会一直重复弹窗弹出更新到新版本的提示&#xff1a; 解决方案 简介&#xff1a;迅雷提示升级是因为每次迅雷主程序启动时都会同时启动一个叫XLLiveUD.exe的程序&#xff0c;这个程序会检…

迅雷软件一直出现崩溃问题的常见解决方法

迅雷是很多人必备的下载软件&#xff0c;但是现在的迅雷功能越来越臃肿&#xff0c;所以经常出现崩溃的情况&#xff0c;那么如何解决迅雷崩溃的问题呢&#xff1f;本文将介绍常见的几种解决方法。 解决方法 方法一 利用360软件管家查看有什么问题&#xff0c;如果还是没有问题…

MATLAB2018a解压文件损坏,文件解压失败与压缩文件文件已经损坏的解决办法

压缩文件以减少文件大小和提高传送速度的特点而广受用户欢迎&#xff0c;压缩文件时一般需要电脑安装压缩软件。我们在解压的过程中电脑有的时候会提示&#xff1a;此解压失败或压缩文件文件已经损坏&#xff1f;下面小编就为大家整理了解压文件出错常见解决办法。 解决办法1&a…

java 内部错误2753_重新安装java出现错误的解决方法

之前手贱&#xff0c;没有从控制面板删除jre&#xff0c;而是把其目录下的文件永久删除。结果引起注册表出错&#xff0c;再重新安装的时候不停地提示错误&#xff0c;经历了三个错误。。折腾了挺久的。现在把它写下来给大家参考 1.第一次想重新安装却一直提示“已安装”&#…

LWIP的大文件下载数据错误

前段时间在做stm32 web下载文件的功能&#xff0c;遇到了一个问题。使用不同的浏览器下载得到的文件数据有所差异。通过具体分析发现使用谷歌和迅雷下载得到的文件是正确的&#xff0c;而使用360&#xff0c;搜狗之类的浏览器得到的文件数据会丢失一个包的数据&#xff0c;而丢…

用迅雷或者IDM下载下载百度网盘文件方法

百度网盘限速让大家在下载资料时很头疼&#xff0c;今天分享一个利用插件快速下载百度网盘里的资料。 连接网址&#xff1a; http://www.cnplugins.com/office/tampermonkey/download.html 参考网址&#xff1a; http://www.cnplugins.com/tool/baiduyun-tampermonkey.html…

Qt 之 模仿迅雷 根据Url获取文件信息——下

一、简述 在上篇 Qt 之 模仿迅雷 根据Url获取文件信息——上 文章中简单介绍了一下几个版本迅雷的界面变化,同时展示了这两天模仿迅雷新建任务窗口做的一个小例子。在这一篇中将讲解如何实现迅雷新建任务窗口。 首先简单看一下效果图。 二、代码之路 看代码之前需要看一下Q…

node 实现文件下载,web打开迅雷下载文件

node实现文件下载 方法一&#xff1a; const express require(express); const router express.Router(); const fs require(fs); const path require(path); const {errorMsg} require("../../util/apiUtils");router.get(/:fileName, async (req, res) >…

迅雷有linux版本吗,迅雷 - Linux Wiki

出自Linux Wiki 提示:此文已超过 7 年(2853 天)未更新,如发现内容过时或有误,欢迎改进:) 虽然迅雷至今仍未开发出Linux版本,不过借助 Wine 运行的迅雷已能实现其基本的功能。 迅雷离线 目前Linux下最佳使用迅雷方案就是迅雷离线配合Linux下的下载工具aria2 、wget,速度可达…

用迅雷打开php文件,迅雷下的php文件怎么打开啊?

simith666的回答&#xff1a; PHP文件是在服务器端执行的脚本文件&#xff0c;用不同文本编辑器打开即可。步骤如下&#xff1a; 1、首先找到php文件所在文件夹&#xff1a; 2、右键单击需要打开的php文件&#xff0c;弹出右键菜单中选择打开方式&#xff1a; 3、在打开的方式的…

核主成分分析方法(KPCA原理篇)

&#xff08;1&#xff09;方法的基本思想是&#xff1a;对样本进行非线性变换&#xff0c;在变换空间进行主成分分析来实现在原空间的非线性主成分分析&#xff1b; &#xff08;2&#xff09;算法步骤&#xff1a; ① 通过核函数计算矩阵&#xff0c;其元素为。其中和为原空…

主成分分析法PCA(一):算法原理

一&#xff1a;算法概述&#xff1a; 主成分分析法&#xff0c;principle component analysis&#xff0c;PCA。也称主分量分析&#xff0c;是一种大样本&#xff0c;多变量数据间内在关系的一种方法。这种方法利用降维的思想&#xff0c;通过向量变换的方法将众多线性相关指标…

主成分分析的基本原理

目录 什么是主成分分析&#xff1f; 主成分分析的步骤 根据什么选择主成分&#xff1f; 怎样解释主成分&#xff1f; 特征值、方差解释率及碎石图 载荷系数与共同度 什么是主成分分析&#xff1f; 主成分的概念由Karl Pearson在1901年提出的。他是考察多个 变量间相关性…

PCA主成分分析原理理解学习(源于b站某视频)

Principal Component Analysis 主成分分析 地址&#xff1a;https://www.bilibili.com/video/BV1E5411E71z?spm_id_from333.337.search-card.all.click 假设要保存二维的信息&#xff0c;由于降维考虑&#xff0c;期望只存储一个维度的信息&#xff08;为了减少存储的信息量&a…

主成分分析(PCA)原理及过程

首先&#xff0c;感谢一下这篇文章的作者&#xff1a;主成分分析原理及过程 PCA原理及过程 在机器学习中&#xff0c;对于数据维度过多问题&#xff0c;提出了一种降维算法叫做PCA算法。具体的降维&#xff1a;例如评估一个国家的GDP水平&#xff0c;需要考量到人口、收入、人…

PCA主成分分析原理的三种角度的理解

主成分分析算是降维算法中的一个经典算法了。网上也有很多博客介绍了这个算法。这篇文章从三个不同的角度&#xff0c;对PCA方法做了详细的分析&#xff0c;不同的角度进行推导最后得到的也都是同一个结果&#xff0c;推导过程需要些数学基础&#xff0c;但总体是非常好理解的。…