1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| procedure TForm.ButtonClick(Sender: TObject);
function GetBucketSize(C: Char): Int64;
var
VolumeName: array[0..MAX_PATH] of Char;
Begin
Result := 0;
// Bug de déclaration GetVolumeNameForVolumeMountPointW en LPCSTR au lieu de LPCWSTR
if GetVolumeNameForVolumeMountPoint(PAnsiChar(PByte(C + ':\')), @VolumeName[0], MAX_PATH) then
begin
with TRegistry.Create(KEY_READ) do
try
if OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume', False) then
begin
if OpenKey(StringReplace(StringReplace(VolumeName, '\\?\Volume', '', []), '\', '', []), False) then
begin
Result := ReadInteger('MaxCapacity');
Result := Result * 1024 * 1024;
end
else
Result := -2;
end
else
Result := -1;
finally
Free();
end;
end
else
RaiseLastOSError();
end;
var
C: Char;
Info: SHQUERYRBINFO;
begin
for C := 'A' to 'Z' do
begin
ZeroMemory(@Info, SizeOf(Info));
Info.cbSize := SizeOf(Info);
if SHQueryRecycleBin(PWideChar(C + ':\'), @Info) = s_OK then
Memo.Lines.Add(Format('%s:\ - Taille occupée : %do pour %d éléments sur taille maximale %do', [C, Info.i64Size, Info.i64NumItems, GetBucketSize(C)]));
end;
end; |
Partager