Hallo..
Habe auch mal vor einiger Zeit etwas mit BITS rumgespielt..
Allerdings habe ich die ganze Job-Geschichte in einen eigenen Thread ausgelagert, welcher auch den Status abfrägt und entsprechend Rückmeldung gibt.
Von dort habe ich mal etwas heraus gezogen:
Delphi-Quellcode:
procedure InitJob(AFileNameSource : WideString; AFileNameTarget : WideString);
var
Bits : IBackgroundCopyManager;
Job: IBackgroundCopyJob;
JobID:
GUID;
begin
CoInitialize(
nil);
try
try
Bits := CoBackgroundCopyManager_.Create;
// Erstellen neuen Job
Assert(Succeeded(Bits.CreateJob('
BITSJob', BG_JOB_TYPE_DOWNLOAD, jobID, job )));
// Fileeinträge erzeugen
Assert(Succeeded(job.AddFile(PWideChar(AFileNameSource), PWideChar(AFileNameTarget))));
// Priorität setzen
Assert(Succeeded(job.SetPriority( BG_JOB_PRIORITY_HIGH )));
// ... Status-Abfragen
job :=
nil;
except
on E:
Exception do
ShowMessage('
Exception : ' + E.Classname + '
: ' + E.
Message);
end;
finally
CoUninitialize;
end;
end;
Dies verwendet die angehängte TLB, jedoch weiß ich nicht mehr, wo die her ist.
Auch ist die TLP für die BITS Vers. 1 und noch nicht für die Vers. 2, funktioniert auf Windows 7 aber problemlos.
Mit BITS können übrigens nicht nur Dateien aus dem Internet herunter geladen werden, sondern auch aus dem Lokalen Netz.