[转]程序实现调用迅雷(以C#为例)

1.首先导入DLL

添加引用 -> COM -> ThunderAgent 1.0 Type Library(前提是已安装迅雷)

或者C:\Program Files\Thunder Network\Thunder\ComDlls\ThunderAgent_Now.dll(路径可能有所不同)

2.代码:

THUNDERAGENTLib.AgentClass agent = new THUNDERAGENTLib.AgentClass();//创建对象
//添加任务:下载http://www.baidu.com/index.html这个文件至C:\baidu.html,
//没有注释,没有引用,立即开始,从多资源下载,原始资源线程5

agent.AddTask("http://www.baidu.com/index.html", "index.html", "C:\\", "", "", 1, 0, 5);
agent.CommitTasks2(1);//提交

3.修改迅雷配置

此时代码部分完成,但是运行的时候会弹出窗口确认下载。
如果想跳过这个窗口,需要在迅雷里面配置:工具》配置》高级》通过IE右键菜单“使用迅雷下载”添加任务,将这项去掉就可以了

附:方法详细说明

void AddTask(string pURL, string pFileName, string pPath, string pComments, string pReferURL, int nStartMode, int nOnlyFromOrigin, int nOriginThreadCount);

参数名含义
pURL目标URL,必须参数
pFileName另存名称,默认为空,表示由迅雷处理,可选参数
pPath存储目录,默认为空,表示由迅雷处理,可选参数
pComments下载注释,默认为空,可选参数
pReferURL引用页URL,默认为空,可选参数
nStartMode开始模式,0手工开始,1立即开始,默认为-1,表示由迅雷处理,可选参数
nOnlyFromOrigin是否只从原始URL下载,1只从原始URL下载,0多资源下载,默认为0,可选参数
nOriginThreadCount原始地址下载线程数,范围1-10,默认为-1,表示由迅雷处理,可选参数

 

 

三、迅雷的开发文档


获得信息
1. BSTR GetInfo(BSTR pInfoName)
功能:获得迅雷或平台相关信息
参数:

参数名

含义

pInfoName

信息名称,有如下4种
◆“ThunderExists”:迅雷是否存在
◆“ThunderRunning”:迅雷是否运行
◆“ThunderVersion”:迅雷版本号
◆“PlatformVersion”:平台版本号


返回值:返回值是字符串与参数pInfoName有对应关系

参数

返回值

“ThunderExists”

“true”存在,“false”不存在

“ThunderRunning”

“true” 运行中, “false”未运行

“ThunderVersion”

迅雷版本号 “x.x.x.x”

“PlatformVersion”

平台版本号 “x.x.x.x”


2. HRESULT GetInfoStruct(INT pInfo)
功能:获取迅雷或平台相关全部信息
参数:

参数名

含义

pInfo

其实是THUNDER_INFO类型的结构指针,调用前把它转换为INT类型;调用后结构中将填充平台信息,定义如下:
typedef struct _THUNDER_INFO
{
BOOL bThunderExists;
BOOL bThunderRunning;
CHAR szThunderVersion[32];
CHAR szPlatformVersion[32];
} THUNDER_INFO;
函数调用后,结构中将填充相应的信息。

返回值:

0

获取成功

非0

获取失败

任务操作
3. 加入任务
HRESULT AddTask
(BSTR pURL,
BSTR pFileName = "",
BSTR pPath = "",
BSTR pComments = "",
BSTR pReferURL = "",
INT nStartMode = -1,
INT nOnlyFromOrigin = 0,
INT nOriginThreadCount = -1);
功能:
往平台加入下载任务信息,此时尚未体现到迅雷中
参数:

参数名

含义

pURL

目标URL,必须参数

pFileName

另存名称,默认为空,表示由迅雷处理,可选参数

pPath

存储目录,默认为空,表示由迅雷处理,可选参数

pComments

下载注释,默认为空,可选参数

pReferURL

引用页URL,默认为空,可选参数

nStartMode

开始模式,0手工开始,1立即开始,默认为-1,表示由迅雷处理,可选参数

nOnlyFromOrigin

是否只从原始URL下载,1只从原始URL下载,0多资源下载,默认为0,可选参数

nOriginThreadCount

原始地址下载线程数,范围1-10,默认为-1,表示由迅雷处理,可选参数

4. 开始任务
HRESULT CommitTaskss()
功能:
把AddTask所加入的下载任务信息真正提交到迅雷中进行下载,并从平台中删除
注意:如果AddTask添加的任务没有被提交没有被取消(调用CancelTasks),则Agent对象析构时会阻塞,所以调用者不应该残留一些没有被提交或者取消的任务,以避免脚本执行者停止响应。
5. 取消任务
HRESULT CancelTasks()
功能:
取消平台中所有由AddTask所加入的下载任务信息
6. 查询任务信息
BSTR GetTaskInfo(BSTR pURL,BSTR pInfoName);
参数:

参数名

含义

pURL

所要查询的下载URL信息

pInfoName

状态名称,有如下几种
◆“Exists”:pURL是否在迅雷的任务列表
◆“Path”:存储目录
◆“FileName”:文件名称
◆“FileSize”:文件大小
◆“CompletedSize”:已下载大小
◆“Percent”:下载进度
◆“Status”:任务状态


返回值: 返回值是字符串与参数pInfoName有对应关系

参数

返回值

“Exists”

”true”存在,”false”不存在

“Path”

存储目录,最后带反斜线",例:C:"TDDownload"

“FileName”

文件名称

“FileSize”

文件大小,以字节为单位,0表示大小未知

“CompletedSize”

已下载大小,以字节为单位

“Percent”

下载进度,带1位小数,例:70.0

“Status”

任务状态,有以下6种状态
。“running”: 运行状态
。“stopped”: 停止状态
。“failed”: 失败状态
。“success”: 成功状态
。“creatingfile”:正在创建数据文件
。“connecting”: 正在连接


7. GetTaskInfoStruct(INT pTaskInfo)
功能:查询一个任务的所有信息

参数名

含义

pTaskInfo

其实是THUNDER_TASKINFO类型的结构指针,调用前把它转换为INT类型;调用后结构中将填充平台信息,定义如下:
typedef struct _THUNDER_TASKINFO
{
CHAR szURL[1024]; // 任务URL,预先填充
BOOL bTaskExists; // 任务是否存在,TRUE为存在
CHAR szPath[256]; // 下载的本地保存路径
CHAR szFileName[256]; // 本地文件名
ULONGLONG nFileSize; // 文件大小
ULONGLONG nCompletedSize; // 已完成的大小
CHAR szPercent[16]; // 完成的百分数,用 “56.8”的格式
CHAR szStatus[16]; // 当前状态,定义同GetTaskInfo函数
} THUNDER_TASKINFO;
调用者先填充结构中的szURL成员,来指定需要查询的任务的URL,然后等函数返回后就可以从其他成员中取得该任务的信息。

转载于:https://www.cnblogs.com/arongbest/archive/2009/08/19/1550005.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP Yii框架中使用smarty模板

第一种方法 按照YII系统的办法生成视图觉得有点麻烦,觉得用smarty更省事。尝试着把smarty模板加进来了。 date_default_timezone_set("PRC"); class PlaceController extends CController { protected $_smarty; function __construct(){ parent::__const…

COM应用实例--获取桌面墙纸路径

COM应用实例--获取桌面墙纸路径&#xff1a;Win32控制台程序(C) /*功能&#xff1a; 获取桌面墙纸的路径&#xff0c;并建立一个该墙纸的快捷方式保存在指定路径说明&#xff1a; COM应用实例, Win32控制台程序 */ #include <iostream> #include <afx.h> #include …

React开发(145):目录规范:

config ├── config.js umi 配置目录 ├── plugin.config.js webpack插件配置目录 └── router.config.js 路由配置目录 src: 静态资源目录: assets 公共组件目录&#xff1a;common 业务组件目录: components 主框架目录&#xff1a;layouts 国际化目录&…

献给网页开发者的20款Firefox插件

毫无疑问&#xff0c;比起其他浏览器&#xff0c;Chrome虽有着明显的优势&#xff0c;但是它的劲敌Firefox却是很多前端攻城师和研发人员的挚爱&#xff0c;为了尽可能地提高用户体验&#xff0c;Firefox的社区在插件开发和运用上有着丰富的经验&#xff0c;说它是网站开发者的…

VC6重载字体对话框,去除颜色下拉框

为了去除字体对话框中的颜色下拉框&#xff0c;我们需要重载字体对话框类&#xff1a;CFontDialog 1. 创建一个MFC Class&#xff0c;继承自CFontDialog: // MyFontDialong.h : header file //// CMyFontDialong dialogclass CMyFontDialong : public CFontDialog {DECLARE_DY…

Mac系统下如何使用命令行方式启动MySQL

首先&#xff0c;先去官网下载MySQL&#xff0c;选择Mac版本的DMG格式的文件。 官网地址为&#xff1a;dev.mysql.com/downloads/mysql/5.7.html 然后下载后&#xff0c;直接双击对应的dmg格式的文件进行安装即可。接下来&#xff0c;我们可以先看下如何在系统偏好设置中启动M…

React开发(146):开发规范

1&#xff0c;编辑器尽量用 VSCode&#xff0c;然后装 Prettier 插件 简单的代码规范 2&#xff0c;缩进2个空格&#xff0c;如果是tab 也设置成2个空格 3&#xff0c;命名时尽量用英文&#xff0c;文件名&#xff0c;组件名等&#xff0c;单词多的可以大写简写。 4&#xff0…

禁止微信公众号页面上下滑动

data(){return {handler: function(e) {e.preventDefault();}, //阻止body滑动} }, methods: {closeTouch: function() {document.getElementsByTagName("body")[0].addEventListener("touchmove", this.handler, { passive: false }); //阻止默认事件}, o…

权限管理系统系列之序言

权限管理系统我相信每个系统都会需要&#xff0c;所以设计一个好的权限管理系统会在系统开发中起到至关重要的作用&#xff0c;节省人力成本和资源&#xff0c;可以不用每次都为权限设计煞费心机。可能每个公司对权限的设计大体相同&#xff0c;略有不同&#xff0c;但是都会不…

linux借助expect完成自动登录

From: http://www.cnblogs.com/sunss/archive/2010/12/23/1914763.html 在工作中&#xff0c;我需要把远程服务器上的文件&#xff0c;拷贝到本地&#xff0c;可是scp的时候必须输入密码&#xff0c;用here文档又不能实现&#xff0c;终于找到一个好东东&#xff0c;expect ,可…

android之隐示意图跳转启动另一个activity

主面板布局&#xff1a;layout/activity_main.xml <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:layout_width"match_parent" android:layout_height"match_parent" android:orientation"…

linux培训课程第六天:ppt以及笔记

第六天授课大纲介绍&#xff1a;第十讲&#xff1a;引导服务器dhcp和NIS这里dhcp服务比较简单,说明一下&#xff0c;首先将dhcp做成功,然后有个dhcp中继,做起来很简单,最主要大家要理解&#xff0c;中继是处在怎样的环境中&#xff0c;你怎样去搭配,这个明白了&#xff0c;下面…

微信公众号 H5 页面中点击一个按钮调起手机的电话拨打功能

1、在H5页面中调起手机的电话拨打功能其实很简单就能实现&#xff1a; <a href"tel:13556891235">点击给我打电话</a>2、在H5页面中调起手机发送短信&#xff1a; <a href"sms:18688888888">发短信</a>3、要想实现点击一个按钮我…

React开发(147):开发注意

## 列表查询做法&#xff1a; 以下查询条件值包括&#xff1a;普通查询和高级查询 1. 首先普通查询和高级查询的值是不相互关联的。 2. 点击查询按钮时会重置 pageIndex 为1&#xff0c;否则查询结果有误差 2. 重置不会重置列表 title 的 sort 和 filter&#xff0c;也不会重置…

中国移动话费查询,短信查询,各种免费查询!以后别打10086了

发送YE/CXYE到10086,余额查询 发送CXBX到10086&#xff0c;查询当月套餐剩余短信条数。 发送CXGFX到10086&#xff0c;查询当月飞信GPRS套餐剩余流量。 发送CXGTC到10086&#xff0c;查询当月GPRS套餐剩余流量。 发送CXCCT到10086&#xff0c;查询当月超级畅听套餐剩余流量。 发…

用宏定义写出swap(x,y)

#include <stdio.h>// SWAP(x, y) 交换x,y的值 #define SWAP(x, y) \(y) (x) (y); \(x) (y) - (x); \(y) (y) - (x);int main() {int a 3-2, b 5*8;SWAP(a, b);printf("%d, %d\n", a, b);return 0; }运行结果&#xff1a; 40, 1

利用XML生成Excel

先用Excel将我们要生成的表格设计好&#xff1a; 然后另存为XML表格&#xff1a; 将生成的Book1.xml复制到项目中并打开: 找到Table节点&#xff0c;将节点的ss:ExpandedRowCount”2” 删除掉 往下会看到我们刚输入的标题了吧 <Row> <Cell ss:StyleID"s23"&…

httpsqs消息队列

安装&#xff1a; 在安装httpsqs之前要安装 libevent-2.0.12-stable.tar.gz和okyocabinet-1.4.47.tar.gz ulimit -SHn 65535 1、安装libevent-2.0.12-stable.tar.gz wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz##下载 tar zxvf libevent-2.0.1…