精易论坛

标题: 带进度下载文件 [打印本页]

作者: 同学麻烦让让    时间: 2021-5-15 13:55
标题: 带进度下载文件
在某网站也发布过,转到这里

URLDownloadToFile这个函数以前最后一个参数一般都是传NULL,今天在网上看到可以传一个类似于COM对象的指针从而实现进度百分比,挺有意思的,参考网上代码,花了点时间改了下。


#include "stdafx.h"

class xiazai:public IBindStatusCallback{
public:
        xiazai(){};
        virtual ~xiazai(){};
        virtual ULONG  __stdcall AddRef(){return E_NOTIMPL;};
        virtual HRESULT __stdcall QueryInterface(REFIID riid,void **ppvObject){return E_NOTIMPL;};
        virtual ULONG __stdcall Release(){return E_NOTIMPL;};
        virtual HRESULT __stdcall GetBindInfo(DWORD *grfBINDF,BINDINFO *pbindinfo){return E_NOTIMPL;};
        virtual HRESULT __stdcall GetPriority(long *pnPriority){return E_NOTIMPL;};
        virtual HRESULT __stdcall OnDataAvailable(DWORD grfBSCF,DWORD dwSize,FORMATETC *pformatetc,STGMEDIUM *pstgmed){return E_NOTIMPL;};
        virtual HRESULT __stdcall OnLowResource(DWORD reserved){return E_NOTIMPL;};
        virtual HRESULT __stdcall OnObjectAvailable(REFIID riid,IUnknown *punk){return E_NOTIMPL;};
        virtual HRESULT __stdcall OnProgress(unsigned long ulProgress,unsigned long ulProgressMax,unsigned long ulStatusCode,LPCWSTR szStatusText);
        virtual HRESULT __stdcall OnStartBinding(DWORD dwReserved,IBinding *pib){return E_NOTIMPL;};
        virtual HRESULT __stdcall OnStopBinding(HRESULT hresult,LPCWSTR szError){return E_NOTIMPL;};
};

HRESULT __stdcall xiazai::OnProgress(unsigned long ulProgress,unsigned long ulProgressMax,unsigned long ulStatusCode,LPCWSTR szStatusText){
        if(ulProgress>0){
                system("cls");
                cout<<_T("文件总大小:")<<_T("\t")<<ulProgressMax<<_T("个字节")<<endl;
                cout<<_T("当前下载:")<<_T("\t")<<ulProgress*100.0/ulProgressMax<<_T("%")<<endl;
                //如果是UNICODE,需改成wcout
        }
        return S_OK;
}


int _tmain(int argc, _TCHAR* argv[])
{
        xiazai ceshi;
        URLDownloadToFile(NULL,_T("https://down.xxx.cn/Tools/Packers/VMProtect_Professional_v2.13.8.rar"),_T("C:\\Users\\69020100204967\\Desktop\\pe.zip"),0,&ceshi);
        system("pause");
        return 0;
}





作者: 喵帕斯和艾希    时间: 2021-5-15 14:22

作者: Loserecall    时间: 2021-5-15 15:02
表示新手看不懂....
作者: kuaizioffice    时间: 2021-12-21 13:04

作者: qwqnoob666    时间: 2022-4-3 20:23
66666666666666666666666666666666666666666666666666666666666
作者: 4444b6666    时间: 2022-6-3 15:40
支持开源~!感谢分享
作者: cpzjj    时间: 2022-7-24 07:33
你是来炫耀的还是来分享的
作者: 同学麻烦让让    时间: 2022-7-24 10:15
cpzjj 发表于 2022-7-24 07:33
你是来炫耀的还是来分享的

你是来装逼的还是来找骂的




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4