- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 c++ 的新手,尝试编写一个更新函数。
使用 URLDownloadToFile 下载没有问题,但如果我将 url 更改为无效的 url,它仍然返回 S_OK ...如何检查下载是否成功?
#include <WinInet.h>
#include <iomanip>
int download_file (const TCHAR urldownload[],const TCHAR target[] )
{
DownloadProgress progress;
IBindStatusCallback* callback = (IBindStatusCallback*)&progress;
SCP(40, NULL); cout << target;
HRESULT status = URLDownloadToFile(NULL, urldownload, target, 0, static_cast<IBindStatusCallback*>(&progress));
Sleep(200);
DeleteUrlCacheEntry(urldownload);
wcout << status;
if (status == S_OK) cout << "yes";
else(cout << "Download failed");
Sleep(10000); return 1;
}
class DownloadProgress : public IBindStatusCallback {
public:
HRESULT __stdcall QueryInterface(const IID &, void **) {
return E_NOINTERFACE;
}
ULONG STDMETHODCALLTYPE AddRef(void) {
return 1;
}
ULONG STDMETHODCALLTYPE Release(void) {
return 1;
}
HRESULT STDMETHODCALLTYPE OnStartBinding(DWORD dwReserved, IBinding *pib) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE GetPriority(LONG *pnPriority) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE OnLowResource(DWORD reserved) {
return S_OK;
}
virtual HRESULT STDMETHODCALLTYPE OnStopBinding(HRESULT hresult, LPCWSTR szError) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE GetBindInfo(DWORD *grfBINDF, BINDINFO *pbindinfo) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE OnDataAvailable(DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE OnObjectAvailable(REFIID riid, IUnknown *punk) {
return E_NOTIMPL;
}
virtual HRESULT __stdcall OnProgress(ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
{
//wcout << ulProgress << L" of " << ulProgressMax << endl; Sleep(200);
if (ulProgress != 0 && ulProgressMax != 0)
{
double output = (double(ulProgress) / ulProgressMax)*100;
cout << "\r" << "Downloading: " << fixed << setprecision(2) << output << " % " ; Sleep(20);
}
return S_OK;
}
};
最佳答案
MSDN article has the answer给你:
URLDownloadToFile
returnsS_OK
even if the file cannot be created and the download is canceled. If the szFileName parameter contains a file path, ensure that the destination directory exists before callingURLDownloadToFile
. For best control over the download and its progress, anIBindStatusCallback
interface is recommended.
您需要提供一个状态回调来接收异步操作的状态。您的代码片段已经有了基础。 OnProgress
和 OnStopBinding
应该让您得到下载失败的结果。
关于c++ - URLDownloadToFile 总是返回 S_OK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32288137/
在 VBA 中使用 URLDownloadToFile,我正在尝试下载文件。问题是正在下载一个空白文件。知道为什么数据丢失吗? Option Explicit Private Declare Func
UrlDownloadToFile 是 AutoHotkey 中的一个很好的命令,大多数时候工作得很好,但有时下载机制对它来说太复杂了。例如,如果下载需要设置特定的用户代理,或者下载需要 cookie
我正在尝试实现将随机文件从网络保存到 .exe 所在的同一目录。问题是我只在指定绝对目录时才让它工作。 我最后尝试的代码是: string home; home = system
我正在研究一些用作“下载管理器”的旧 ATL OCX。它使用 URLDownloadToFile API 下载文件。 以前,它作为 ActiveX 托管在网页上,因此如果服务器需要身份验证,它由 IE
我正在尝试在 Windows 命令行中执行单行文件下载,而不依赖于 WGET 等外部工具,甚至不编写 PowerShell 或 VBScripts 脚本。 我试着跑 c:\> RunDLL32.exe
我正在使用 URLDownloadToFile() 将图像从 Web 服务器下载到我桌面上的目录。如果我不想将图像保存到磁盘,而是想将它们读入内存(如字节数组或 base64 字符串等),是否有类似于
如何在不将此页面保存到磁盘的情况下将网页下载为字符串 C++? URLDownloadToFile MSDN function仅将页面保存到磁盘。 最佳答案 您是否查找了其中提到的其他 URLXXX
我是 c++ 的新手,尝试编写一个更新函数。 使用 URLDownloadToFile 下载没有问题,但如果我将 url 更改为无效的 url,它仍然返回 S_OK ...如何检查下载是否成功? #i
URLDownloadToFile 函数是否有其他替代方法?我无法从证书无效的 HTTPS 服务器下载任何内容。是否有任何通用的 HTTP 客户端可用于从具有无效证书的 HTTPS 服务器下载文件?这
我正在使用 URLDownloadToFile 从网站检索文件。后续调用返回原始文件而不是更新版本。我假设它正在检索缓存版本。 最佳答案 在调用 URLDownloadToFile 之前使用相同的 U
我正在寻找用 C++(在 Windows 上)下载文件的最简单方法。URLDownloadToFile 听起来不错,不需要我使用 curl 或其他我不需要的胖库 - 这个功能有什么要求?它将在哪个 W
如何异步使用此 API URLDownloadToFile?我需要通过 SendMessage 向客户端窗口显示下载进度,这无法完成,因为 API 似乎是同步的,并且在下载完成之前它永远不会发送 On
我想制作从互联网下载页面并对其进行一些解析的程序。第二部分很简单,问题是第一。 我想使用 URLDownloadToFile() 函数。但默认情况下它不会等待完成下载。 MSDN 说最后一个参数是一种
这个问题在这里已经有了答案: How can I prevent URLDownloadToFile from retrieving from the cache? (4 个答案) 关闭 7 年前。
我尝试使用 VBA 从 Excel 中的服务器下载文件。这在使用 HTTP 时工作正常,但在使用 HTTPS 时不起作用。 我可以在 Internet Explorer 中访问这两个地址 (HTTP/
我正在尝试使用 Delphi XE2 从互联网下载文件,但没有任何反应。这是我的代码: uses URLMon; ... procedure TForm1.Button1Click(Sender: T
如何在 Delphi 中实现以下 Windows 函数? HRESULT URLDownloadToFile( LPUNKNOWN pCaller, LPCTSTR szURL,
我有一个 C++ 应用程序(类似于 this one),它使用 URLDownloadToFile 方法(在 urlmon.dll 中定义)下载文件。在 IE8 之前,可以通过在进度回调中返回 E_A
#include "stdafx.h" #include #include #include #include #include #include #pragma comment(lib,
我正在为自己制作一张 Excel 表格来跟踪我的投资。我有这个证券交易所网站的链接,该链接有一个 zip 文件,其中包含最后交易日交易数据的 CSV 文件。 zip 文件的名称是动态的,格式为“eq_
我是一名优秀的程序员,十分优秀!