0

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));
}
4

1 に答える 1

1

あなたのコードはエラー処理を行っておらず、文字列処理が間違っています。代わりにこれを使用してください:

#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 インターフェイスを使用することをお勧めします。

于 2016-01-21T08:13:48.367 に答える