C# 调用迅雷 7 迅雷下载开放引擎
最近有个项目需要用winform调用迅雷下载。上网百度后发现迅雷自带的com组件从迅雷5之后就废掉了,除了能添加任务,其余功能全不能用。后来又发现了迅雷下载开放引擎这么个东西 http://thunderplatform.xunlei.com/ ,虽然只支持HTTP协议,但比thunderagentlib好用多了。把XLDownload.dll和zlib1.dll放到程序根目录并添加下面的类即可调用,具体函数说明参见 http://xldoc.xl7.xunlei.com/0000000026/index.html 。转载请注明出处。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
class thunder
{
//迅雷下载开放引擎
[DllImport("XLDownload.dll", EntryPoint = "XLInitDownloadEngine")]
public static extern bool XLInitDownloadEngine();
[DllImport("XLDownload.dll", EntryPoint = "XLUninitDownloadEngine")]
public static extern bool XLUninitDownloadEngine();
[DllImport("XLDownload.dll", EntryPoint = "XLURLDownloadToFile", CharSet = CharSet.Auto)]
public static extern int XLURLDownloadToFile(string pszFileName,string pszUrl, string pszRefUrl, ref Int32 lTaskId);
[DllImport("XLDownload.dll", EntryPoint = "XLQueryTaskInfo", CharSet = CharSet.Auto)]
public static extern int XLQueryTaskInfo(int lTaskId, ref int plStatus, ref UInt64 pullFileSize, ref UInt64 pullRecvSize);
[DllImport("XLDownload.dll", EntryPoint = "XLGetErrorMsg",CharSet = CharSet.Auto)]
public static extern int XLGetErrorMsg(int dwErrorId, string pszBuffer,ref int dwSize);
[DllImport("XLDownload.dll", EntryPoint = "XLContinueTask", CharSet = CharSet.Auto)]
public static extern int XLContinueTask(int lTaskId);
[DllImport("XLDownload.dll", EntryPoint = "XLContinueTaskFromTdFile", CharSet = CharSet.Auto)]
public static extern int XLContinueTaskFromTdFile(string pszTdFileFullPath, ref int lTaskId);
[DllImport("XLDownload.dll", EntryPoint = "XLPauseTask", CharSet = CharSet.Auto)]
public static extern int XLPauseTask(int lTaskId, ref int lNewTaskId);
[DllImport("XLDownload.dll", EntryPoint = "XLStopTask", CharSet = CharSet.Auto)]
public static extern int XLStopTask(int lTaskId); public const int TaskStatus_Connect = 0; // 已经建立连接
public const int TaskStatus_Download = 2; // 开始下载
public const int TaskStatus_Pause = 10; // 暂停
public const int TaskStatus_Success = 11; // 成功下载
public const int TaskStatus_Fail = 12; // 下载失败 public const int XL_SUCCESS = 0;
public const int XL_ERROR_FAIL = 0x10000000; // 尚未进行初始化
public const int XL_ERROR_UNINITAILIZE = XL_ERROR_FAIL + 1; // 不支持的协议,目前只支持HTTP
public const int XL_ERROR_UNSPORTED_PROTOCOL = XL_ERROR_FAIL + 2; // 初始化托盘图标失败
public const int XL_ERROR_INIT_TASK_TRAY_ICON_FAIL = XL_ERROR_FAIL + 3; // 添加托盘图标失败
public const int XL_ERROR_ADD_TASK_TRAY_ICON_FAIL = XL_ERROR_FAIL + 4; // 指针为空
public const int XL_ERROR_POINTER_IS_NULL = XL_ERROR_FAIL + 5; // 字符串是空串
public const int XL_ERROR_STRING_IS_EMPTY = XL_ERROR_FAIL + 6; // 传入的路径没有包含文件名
public const int XL_ERROR_PATH_DONT_INCLUDE_FILENAME = XL_ERROR_FAIL + 7; // 创建目录失败
public const int XL_ERROR_CREATE_DIRECTORY_FAIL = XL_ERROR_FAIL + 8; // 内存不足
public const int XL_ERROR_MEMORY_ISNT_ENOUGH = XL_ERROR_FAIL + 9; // 参数不合法
public const int XL_ERROR_INVALID_ARG = XL_ERROR_FAIL + 10; // 任务不存在
public const int XL_ERROR_TASK_DONT_EXIST = XL_ERROR_FAIL + 11; // 文件名不合法
public const int XL_ERROR_FILE_NAME_INVALID = XL_ERROR_FAIL + 12; // 没有实现
public const int XL_ERROR_NOTIMPL = XL_ERROR_FAIL + 13; // 已经创建的任务数达到最大任务数,无法继续创建任务
public const int XL_ERROR_TASKNUM_EXCEED_MAXNUM = XL_ERROR_FAIL + 14; // 任务类型未知
public const int XL_ERROR_INVALID_TASK_TYPE = XL_ERROR_FAIL + 15; // 文件已经存在
public const int XL_ERROR_FILE_ALREADY_EXIST = XL_ERROR_FAIL + 16; // 文件不存在
public const int XL_ERROR_FILE_DONT_EXIST = XL_ERROR_FAIL + 17; // 读取cfg文件失败
public const int XL_ERROR_READ_CFG_FILE_FAIL = XL_ERROR_FAIL + 18; // 写入cfg文件失败
public const int XL_ERROR_WRITE_CFG_FILE_FAIL = XL_ERROR_FAIL + 19; // 无法继续任务,可能是不支持断点续传,也有可能是任务已经失败
// 通过查询任务状态,确定错误原因。
public const int XL_ERROR_CANNOT_CONTINUE_TASK = XL_ERROR_FAIL + 20; // 无法暂停任务,可能是不支持断点续传,也有可能是任务已经失败
// 通过查询任务状态,确定错误原因。
public const int XL_ERROR_CANNOT_PAUSE_TASK = XL_ERROR_FAIL + 21; // 缓冲区太小
public const int XL_ERROR_BUFFER_TOO_SMALL = XL_ERROR_FAIL + 22; // 调用XLInitDownloadEngine的线程,在调用XLUninitDownloadEngine之前已经结束。
// 初始化下载引擎线程,在调用XLUninitDownloadEngine之前,必须保持执行状态。
public const int XL_ERROR_INIT_THREAD_EXIT_TOO_EARLY = XL_ERROR_FAIL + 23; // TP崩溃
public const int XL_ERROR_TP_CRASH = XL_ERROR_FAIL + 24; // 任务不合法,调用XLContinueTaskFromTdFile继续任务。内部任务切换失败时,会产生这个错误。
public const int XL_ERROR_TASK_INVALID = XL_ERROR_FAIL + 25;
}
}
C# 调用迅雷 7 迅雷下载开放引擎的更多相关文章
- Python: 调用youtube_dl实现视频下载
研究PySide与youtube_dl结合实现视频下载,抽丝剥蚕,步步维艰,却也颇有意思. 记录初始心得.界面以PySide之Qt编写,调用youtube_dl下载,回调出下载进度,代码如下: # e ...
- python下载地址到迅雷qq旋风下载
迅雷和qq旋风下载,有加速和离线功能,非常方面,我是在网上看到的原始地址和迅雷地址,qq旋风地址的转化原理.然后用python+pyqt写了一个client 原理: 迅雷: 迅雷下载地址=" ...
- javascript与java的相互调用,纯java的javascript引擎rhino(转载)
1.下载Rhino安装包,下载地址:官网http://www.mozilla.org/rhino. 2.rhino环境配置,把解压出来的js.jar文件加入到系统的环境变量classpath 3.在命 ...
- Arch Linux之pacman调用axel多线程加速下载
转载自 奶牛博客 本来感觉Arch Linux用个国内的源就很给力了,可是到了学校移动的cmcc-edu超级不稳定,而且单线程速度就二三十k,无奈,开多线程下载.在Ubuntu下面可以用apt-fas ...
- 最新.net和Java调用SAP RFC中间件下载
还记得2012年初我发布的全网络第一个关于.net 连接SAP RFC的NCO3原创博文,用的就是SAP出的最新的.Net Connector 3.0的版本,在那个时候都是普遍用其他蹩脚的方式或Web ...
- java客户端调用ftp上传下载文件
1:java客户端上传,下载文件. package com.li.utils; import java.io.File; import java.io.FileInputStream; import ...
- [uiautomator篇][python调用java][1]应用下载的插件需要很长时间问题解决
1第一次打开应用,可能会要求下载插件,我们先在/sdcard/Android/data/<packageName> 或者/data/data/<pakeageName>找到插 ...
- js调用后台接口进行下载
js调用后台接口一定不能用ajax location.href=$$pageContextPath +'downfile/down.do?filname='+row.fileUrl;
- cocos2d-x_下载游戏引擎并创建第一个项目
我是一名小白. 下载并创建游戏项目 第一步:去官网下载cocos2d-x http://www.cocos.com/download 第二步:将安装包里边的 setup.py 拖进命令行点击回车键 , ...
随机推荐
- Grunt的配置和使用(一)
Grunt的配置和使用(一) Grunt 和 Grunt 的插件都是通过 Node.js 的包管理器 npm 来安装和管理的.为了方便使用 Grunt ,你应该在全局范围内安装 Grunt 的命令行接 ...
- Median of Sorted Arrays
(http://leetcode.com/2011/03/median-of-two-sorted-arrays.html) There are two sorted arrays A and B o ...
- Java 网络编程(三) 创建和使用URL访问网络上的资源
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951877.html 创建和使用URL访问网络上的资源 URL(Uniform Reso ...
- poj 2773 Happy 2006 容斥原理+二分
题目链接 容斥原理求第k个与n互质的数. #include <iostream> #include <vector> #include <cstdio> #incl ...
- kafka集群配置与测试
刚接触一些Apache Kafka的内容,用了两天时间研究了一下,仅以此文做相关记录,以供学习交流. 概念: kafka依赖的项: 1. 硬件上,kafka利用线性存储来进行硬盘直接读写. 2. k ...
- ElasticSearch基本用法
最大的特点: 1. 数据库的 database, 就是 index 2. 数据库的 table, 就是 tag 3. 不要使用browser, 使用curl来进行客户端操作. 否则会出现 jav ...
- MinGW 编译zlib、libpng、libjpeg、libcurl等(全都是Qt项目)
MinGW 这里使用的是Qt5自带的MinGw版本,将路径D:\Qt\Qt5.1.0\Tools\mingw48_32\bin加到"环境变量"→"系统变量"→& ...
- Spring Boot Logback应用日志
e Spring Boot Logback应用日志 2015-09-08 19:57 7673人阅读 评论(0) 收藏 举报 . 分类: Spring Boot(51) . 目录(?)[+] 日志对于 ...
- JavaEE Tutorials (9) - 运行持久化示例
9.1order应用118 9.1.1order应用中的实体关系119 9.1.2order应用中的主键121 9.1.3实体映射到多个数据库表125 9.1.4order应用中的层叠操作125 9. ...
- WiFi密码破解CDlinux
好了,先说下提前要准备的东东吧:1.U盘一枚,最小1G空间.需进行格式化操作,提前保存内部文件.2.CDlinux镜像.帖子最后会提供一枚8月最新修改版,共135M. 1.CDlinux U盘启动 ...