С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
chaleureux
18 / 21 / 19
Регистрация: 24.12.2014
Сообщений: 1,002
1

URLDownloadToFile не загружает файл

30.07.2017, 18:28. Просмотров 492. Ответов 0
Метки нет (Все метки)

C++
1
2
3
4
5
6
#include <urlmon.h>
int main(int argc, char* argv[])
{
    URLDownloadToFile(0, L"откуда качаем", L"куда сохраняем", 0, 0); // на строке L вызывает ошибки.
    return 0;
}
Возникает ошибка:
аргумент типа "const wchar_t *" несовместим с параметром типа "LPCSTR"
P.S: Visual studio 2015 ( Винда - Windows 7 )

Добавлено через 8 минут
Появились так же новые ошибки после изменение кодировки в свойствах проекта, такие как:
ссылка на неразрешенный внешний символ _URLDownloadToFileW@20 в функции _main
и
неразрешенных внешних элементов: 1
Добавлено через 1 час 22 минуты
Попробовал изменить всё
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <urlmon.h>    
#include <iostream>
 
#pragma comment(lib, "urlmon.lib")
 
using namespace std;
 
 
class MyCallback : public IBindStatusCallback
{
public:
    MyCallback() {}
 
    ~MyCallback() { }
 
    // This one is called by URLDownloadToFile
    STDMETHOD(OnProgress)(/* [in] */ ULONG ulProgress, /* [in] */ ULONG ulProgressMax, /* [in] */ ULONG ulStatusCode, /* [in] */ LPCWSTR wszStatusText)
    {
        cout << "Downloaded " << ulProgress << " of " << ulProgressMax << " byte(s), " << " Status Code = " << ulStatusCode << endl;
        return S_OK;
    }
 
    // The rest  don't do anything...
    STDMETHOD(OnStartBinding)(/* [in] */ DWORD dwReserved, /* [in] */ IBinding __RPC_FAR *pib)
    {
        return E_NOTIMPL;
    }
 
    STDMETHOD(GetPriority)(/* [out] */ LONG __RPC_FAR *pnPriority)
    {
        return E_NOTIMPL;
    }
 
    STDMETHOD(OnLowResource)(/* [in] */ DWORD reserved)
    {
        return E_NOTIMPL;
    }
 
    STDMETHOD(OnStopBinding)(/* [in] */ HRESULT hresult, /* [unique][in] */ LPCWSTR szError)
    {
        return E_NOTIMPL;
    }
 
    STDMETHOD(GetBindInfo)(/* [out] */ DWORD __RPC_FAR *grfBINDF, /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo)
    {
        return E_NOTIMPL;
    }
 
    STDMETHOD(OnDataAvailable)(/* [in] */ DWORD grfBSCF, /* [in] */ DWORD dwSize, /* [in] */ FORMATETC __RPC_FAR *pformatetc, /* [in] */ STGMEDIUM __RPC_FAR *pstgmed)
    {
        return E_NOTIMPL;
    }
 
    STDMETHOD(OnObjectAvailable)(/* [in] */ REFIID riid, /* [iid_is][in] */ IUnknown __RPC_FAR *punk)
    {
        return E_NOTIMPL;
    }
 
    // IUnknown stuff
    STDMETHOD_(ULONG, AddRef)()
    {
        return 0;
    }
 
    STDMETHOD_(ULONG, Release)()
    {
        return 0;
    }
 
    STDMETHOD(QueryInterface)(/* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject)
    {
        return E_NOTIMPL;
    }
};
Пробую загрузить файл на диск C:\\

C++
1
2
3
4
5
6
7
8
9
int main(int argc, char* argv[])
{
    std::wstring location = L"C:";
    std::wstring url = L"https://www.codeproject.com/script/Articles/Download.aspx?file=/KB/winsdk/registrymonitor/RegistryMonitor_src.zip&rp=https://www.codeproject.com/Articles/4502/RegistryMonitor-a-NET-wrapper-class-for-RegNotifyC";
    MyCallback pCallback;
    URLDownloadToFile(NULL, url.c_str(), location.c_str(), 0, &pCallback);
    system("Pause");
    return 0;
}
Но файл не появляется, если же изменить путь в
C++
1
std::wstring location = L"C:";
на
C++
1
std::wstring location = L"C:\\File.rar";
то файл появляется нужного размера, но открыть его невозможно, пишет что: Архив повреждён

Добавлено через 2 часа 31 минуту
Проблема оказалась в ссылке на сам файл, при загрузке ссылка должна заканчиваться на src.zip
В строчке
C++
1
std::wstring location = L"C:\";
нужно указывать название файла при загрузке , например: program.zip
В таком случае всё нормально скачалось на диск.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2017, 18:28
Ответы с готовыми решениями:

Функция URLDownloadToFile не скачивает файл
Всем привет!!! Пытаюсь с сайта скачать файл .exe с помощью функции...

URLDownloadToFile()
Привет всем. Возникла проблема с использованием функции URLDownloadToFile()....

URLDownloadToFile не работает на другом компьютере
Здравствуйте , возникла проблема.Через функцию URLDownloadToFile() качаю .txt...

Не загружает файл на сервер
Вот такой простой скрипт не работает, всегда выводит &quot;Ошибка загрузки&quot; &lt;?php ...

не загружает или только частично загружает многие .com
столкнулся с проблемой, с недавнего времени не заходит на многие сайты с...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2017, 18:28

WebClient не загружает zip файл с github
Доброе утро. Решил быстренько написать простенький загрузчик и сразу же...

Почему программа не открывает ( не загружает) файл?
Добрый день! Подскажите почему программа не открывает ( не загружает) файл при...

Win 7 в безопасном режиме не загружает файл?
win 7 в нормальном режиме не загружается виснет на логотипе в безопасном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru