
A mellékelt példaprogram megnyitása előtt a RecycleInfo.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponensben létrehozunk két property-t, melyekből a szükséges adatok kiolvashatók. A Count property árulja el, hogy hány darab elem található a lomtárban, míg a Size property tárolja ezek összméretét.
A feladat megvalósításához szükségünk lesz egy függvényre, mely a shell32.dll-ben található. Első lépésként ezt deklaráljuk külső függvényként.
function SHQueryRecycleBin(szRootPath: PChar; SHQueryRBInfo: PSHQueryRBInfo): HResult; stdcall; external 'shell32.dll' Name 'SHQueryRecycleBinA';
A komponenshez létrehozunk még egy logikai típusú property-t Active néven, melyet ha igazra állítunk, akkor történik meg a lomtár adatainak kiolvasása, vagyis a Size és Count property beállítása.
procedure TRecycleInfo.SetActive(const Value: boolean);
begin
FActive := Value;
FSize:=0;
FCount:=0;
if FActive then begin
Itt nincs más dolgunk, mint meghívni a SHQueryRecycleBin függvényt, melynek egy TSHQueryRBInfo struktúrát kell átadnunk. Ennek a struktúrának csak a cbSize mezőjét kell beállítanunk, méghozzá a struktúra méretére.
ZeroMemory(@qi, SizeOf(TSHQueryRBInfo));
qi.cbSize:=SizeOf(TSHQueryRBInfo);
if SHQueryRecycleBin(nil, @qi) = S_OK then begin
A függvény futása után, a TSHQueryRBInfo struktúra i64Size mezőjében kapjuk meg a lomtár állományainak összméretét, míg az i64NumItems mezőben az állományok számát.
FSize:=qi.i64Size;
FCount:=qi.i64NumItems;
end;
end;
end;