UrlToDownloadFile功能无法下载

时间:2016-01-21 03:46:19

标签: c++ msdn urlmon

我正在使用UrlToDownloadFile函数,但它不会下载该文件。编译器中没有显示错误(使用VStudio 2012)

以下是代码:

#include <Windows.h>
#include "urlmon.h"

#pragma lib "urlmon.lib"

using namespace std;

void dwFile();


int _tmain(int argc, _TCHAR* argv[])
{
    dwFile ();
    return 0;
}

void dwFile () 
{
    LPCSTR url = ("http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf");
    LPCSTR fPath = ("C:\\Users\\Andyy\\Desktop\\test\\n3337.pdf");

    HRESULT URLDownloadToFile ((NULL, url, fPath, 0, NULL));
}

1 个答案:

答案 0 :(得分:0)

您的代码没有进行任何错误处理,并且您的字符串处理错误。请改用:

#include <Windows.h>
#include "urlmon.h"

#pragma lib "urlmon.lib"

using namespace std;

void dwFile();

int _tmain(int argc, _TCHAR* argv[])
{
    dwFile ();
    return 0;
}

void dwFile () 
{
    LPCTSTR url = TEXT("http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf");
    LPCTSTR fPath = TEXT("C:\\Users\\Andyy\\Desktop\\test\\n3337.pdf");

    HRESULT hr = URLDownloadToFile (NULL, url, fPath, 0, NULL);
    if (FAILED(hr))
    {
        // do something ...
    }

    /* or more preffered:

    LPCWSTR url = L"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf";
    LPCWSTR fPath = L"C:\\Users\\Andyy\\Desktop\\test\\n3337.pdf");

    HRESULT hr = URLDownloadToFileW (NULL, url, fPath, 0, NULL);
    if (FAILED(hr))
    {
        // do something ...
    }
    */
}

请在文档中注明以下注释:

  

即使无法创建文件且取消下载, URLDownloadToFile也会返回S_OK 。如果szFileName参数包含文件路径,请在调用URLDownloadToFile之前确保目标目录存在。 为了最好地控制下载及其进度,建议使用IBindStatusCallback接口