关于使用URLMon的UrlDownloadToFile函数进行文件下载的进度显示问题(50分)

  • 主题发起人 主题发起人 Adnil
  • 开始时间 开始时间
A

Adnil

Unregistered / Unconfirmed
GUEST, unregistred user!
该函数使用非常方便,不过没有用线程方式执行,而且下载进度无法得知(下载一个大文件的时候),我们总想显示下载进度,请问各位大虾有什么解决方案吗?

附上一些代码
原型:
function URLDownloadToFile(Caller: IUnknown; URL: PChar; FileName: PChar; Reserved: DWORD; StatusCB: IBindStatusCallback): HResult; stdcall;
StatusCB如何使用?

示例:
uses URLMon;

function DownloadFile(Source: string; Dest: TFileName): boolean;
begin
try
Result := UrlDownloadToFile(nil, Pchar(Source), Pchar(Dest), 0, nil) = 0;
except
Result := False;
end;
end;
 
找到一些相关信息了

实现IBindStatusCallback接口定义就能显示进度。
 
想获得进程必须通过其OnProgress事件。首先通过GetBindInfo获得状态,然后在ulStatusCode中显示即可。
这儿有详细文档——http://www.graphcomp.com/info/specs/ms/CODEDWLD.HTM
另外你也可以开一个线程用Progressbar来做,获得下载文件大小后控制该控件!
 
我还是不明白 :(
需要定义一个类来实现IBindStatusCallback接口吗?
 
哎,搞不定了
 
接受答案了.
 
后退
顶部