Auszug aus einer meiner Shell-Erweiterungen; mach was draus:
Delphi-Quellcode:
if(lpdobj = nil) then
begin
Result := E_INVALIDARG;
exit;
end;
with FormatEtc do
begin
cfFormat := CF_HDROP;
ptd := nil;
dwAspect := DVASPECT_CONTENT;
lindex := -1;
tymed := TYMED_HGLOBAL;
end;
Result := lpdobj.GetData(FormatEtc, StgMedium);
if(failed(Result)) then exit;
// how many files?
iLen := DragQueryFile(StgMedium.hGlobal, $ffffffff, nil, 0);
if(iLen >= 0) then
begin
// clean-up
SetLength(dfl, iLen);
for i := 0 to iLen - 1 do
begin
DragQueryFile(StgMedium.hGlobal, i, buf, sizeof(buf));
dfl[i] := buf;
end;
Result := NOERROR;
end;
ReleaseStgMedium(StgMedium);
Das dynamische Array am Schluss auch wieder auf Null setzen.