360上市了,同时周鸿祎也暗示自己投资的另一家公司也要上市,业界都在猜测是否是迅雷。但是又有传闻说美国会拿迅雷上市开刀,以知识产权来影响中国互联网企业上市的门槛。
最近迅雷也开放了自己的下载引擎,使得用户不需要安装迅雷,也可以使用迅雷引擎来进行下载。围绕着迅雷做开发,利用迅雷下载的资源优势,和逐渐壮大的迅雷雷友社区来创造增值,应该是迅雷开放自己下载引擎的目的。围绕迅雷做开发大体上有三种:
1. 使用迅雷的开放引擎XLDownload.dll做开发。
2. 使用迅雷的ThunderAgent.dll, COM组件做Agent开发。
3. 使用Lua在迅雷内部做应用插件开发。
Reference:
http://thunderplatform.xunlei.com/
http://xldoc.xl7.xunlei.com/
1. 使用迅雷的开放引擎XLDownload.dll做开发
在XLDownload.dll的 .h 头文件里给出了XLDownload.dll提供的功能:
- BOOL __stdcall XLInitDownloadEngine();
- DWORD __stdcall XLURLDownloadToFile(LPCTSTR pszFileName, LPCTSTR pszUrl, LPCTSTR pszRefUrl, LONG & lTaskId);
- DWORD __stdcall XLQueryTaskInfo(LONG lTaskId, LONG *plStatus, ULONGLONG *pullFileSize, ULONGLONG *pullRecvSize);
- DWORD __stdcall XLPauseTask(LONG lTaskId, LONG & lNewTaskId);
- DWORD __stdcall XLContinueTask(LONG lTaskId);
- DWORD __stdcall XLContinueTaskFromTdFile(LPCTSTR pszTdFileFullPath, LONG & lTaskId);
- VOID __stdcall XLStopTask(LONG lTaskId);
- BOOL __stdcall XLUninitDownloadEngine();
- DWORD __stdcall XLGetErrorMsg(DWORD dwErrorId, LPTSTR pszBuffer, DWORD & dwSize);
- enum enumTaskStatus{
- enumTaskStatus_Connect = 0, // 已经建立连接
- enumTaskStatus_Download = 2, // 开始下载
- enumTaskStatus_Pause = 10, // 暂停
- enumTaskStatus_Success = 11, // 成功下载
- enumTaskStatus_Fail = 12, // 下载失败
- };
复制代码 根据这9个函数,可以使用.Net DllImport 一下,开发出一个基于迅雷引擎的下载工具:
迅雷的开放引擎在被调用时,会在系统托盘里弹出提示信息,告诉用户正在使用迅雷开放引擎下载:
这个版本的开放下载引擎稍有遗憾,好像只支持Http协议的资源,迅雷本协议的资源并不支持下载。这个让人很是遗憾。
2. 使用迅雷的ThunderAgent.dll, COM组件做Agent开发
安装完迅雷后,在迅雷的BHO文件夹下会找到ThunderAgent.dll,.Net 工程加载这个dll后,会看到Agent内部的API :
使用Agent开发迅雷应用,迅雷必须安装,调用AddTask后会弹出迅雷的提示框:
需要用户自己点击"立即下载"。可以使用FindWindow, SendMessage, 类似自动测试常用的办法点击"立即下载"。
3. 使用Lua在迅雷内部做应用插件开发
Lua 作为内嵌语言来做插件开发已经非常成熟了,最为著名的应该算暴雪的《魔兽世界》和其它各大游戏厂商都在使用Lua作为自己游戏的插件开发语言。迅雷也选用Lua作为自己的插件开发语言。使用Lua可以快速方便的开发出一个迅雷应用插件:
这个 Blog&Music 迅雷插件想在迅雷里一边看博客,一边听音乐。点击插件,会新开一个Tab页载入博客:
同时在下载状态栏里载入一个音乐播放器: |
|