使用迅雷下载API进行快速下载

使用迅雷下载API进行快速下载


  • 首先新建工程,在资源的链接器加入XLDownload.lib
  • 并在代码中加入代码
  • 在源码目录中加入XLDownload.dll,XLDownload.lib,XLDownload.h,XLError.h
// xlmydownload.cpp : 定义控制台应用程序的入口点。
// XLDownload.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
#include "stdafx.h"
#include <stdio.h>
#include "stdlib.h"
#include ".\\XLDownload.h"
#include ".\\XLError.h"
#pragma comment(lib, "XLDownload.lib")

int main()
{
    // 1、初始化下载引擎
    if (FALSE == XLInitDownloadEngine())
    {
        printf("Initialize download engine failed.\n");
        return 1;
    }

    // 2、启动新任务
    // PS:如果链接无法通过,请把工程属性“将wchar_t设置为内置类型        (/Zc:wchar_t)”设置为Yes
    LONG   lTaskId = 0;
    DWORD  dwRet = XLURLDownloadToFile(
        _T("d:\\xmp.exe"),
        _T("http://xmp.down.sandai.net/kankan/XMPSetup_3.8.1.485-www.exe"),
        _T(""), lTaskId);

    if (XL_SUCCESS != dwRet)
    {
        XLUninitDownloadEngine();
        printf("Create new task failed, error code:%d.\n", dwRet);
        return 1;
    }

    printf("Begin download file.\n");

    // 3、查询任务状态
    do
    {
        ::Sleep(1000);

        ULONGLONG   ullFileSize = 0;
        ULONGLONG   ullRecvSize = 0;
        LONG        lStatus = -1;

        dwRet = XLQueryTaskInfo(lTaskId, &lStatus, &ullFileSize, &ullRecvSize);
        if (XL_SUCCESS == dwRet)
        {
            // 输出进度信息
            if (0 != ullFileSize)
            {
                double  douProgress = (double)ullRecvSize / (double)ullFileSize;
                douProgress *= 100.0;
                printf("Download progress:%.2f%%\n", douProgress);
            }
            else
            {
                printf("File size is zero.\n");
            }

            if (enumTaskStatus_Success == lStatus)
            {
                printf("Download successfully.\n");
                break;
            }

            if (enumTaskStatus_Fail == lStatus)
            {
                printf("Download failed.\n");
                break;
            }
        }
    } while (XL_SUCCESS == dwRet);

    // 4、无论是否下载成功,都必须调用XLStopTask
    XLStopTask(lTaskId);

    // 5、释放资源
    XLUninitDownloadEngine();
    return 0;
}
  • 代码编译如果出错,需将字符集改为Unicode 字符集
  • 运行程序,就可以使用迅雷API进行下载了
上一篇:简单工厂


下一篇:缩小sql server数据库日志文件,限制sql server数据库日志文件的大小