Hmm ich habe mich wieder unverständlich ausgedrückt, bitte verzeiht
Was ich eigentlich meinte ist: Ich muss in der OnProgress Methode auf Eigenschaften des Caller-Threads zugreifen. Habe es vorläufig mal dadurch gelöst, dass ich eine "Owner: TObject" Variable zum Public-Feld des cDownloadStatusCallback hizufügte:
Delphi-Quellcode:
type
cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback)
private
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
function OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; stdcall;
function GetPriority(out nPriority): HResult; stdcall;
function OnLowResource(reserved: DWORD): HResult; stdcall;
function OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; stdcall;
function OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall;
function GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall;
function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc; stgmed: PStgMedium): HResult; stdcall;
function OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall;
public
Owner : TObject;
end;
Und dann im OnProgress Ereignis:
Delphi-Quellcode:
function cDownloadStatusCallback.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult;
var OwnerThread: TDownloadThread;
begin
OwnerThread := Owner as TDownloadThread;
case ulStatusCode of
BINDSTATUS_FINDINGRESOURCE:
begin
OwnerThread.StatusString := 'File found...';
end;
///.....usw.
end;
Bisher kam noch kein Ausnahmefehler, daher glaube ich einfach mal, dass es funktioniert^...
Dani H.