// C/C++
// Проверка и очистка корзины на локальном диске C:
  SHQueryRBInfo.cbSize = sizeof(SHQUERYRBINFO);
  hr = SHQueryRecycleBin("C:\\", &SHQueryRBInfo);
  if(
    SUCCEEDED(hr)
    &&
    (SHQueryRBInfo.i64NumItems > 0)
  )
  {
    SHEmptyRecycleBin( 0, "C:\\", 0 );
  }
// Delphi
// Данные типы и методы не описаны в ShlObj.Pas,
//  поэтому опишем их сами.
type
  SHQUERYRBINFO = record
    cbSize: DWORD;
    i64Size: Int64;
    i64NumItems: Int64;
  end;
  LPSHQUERYRBINFO = ^SHQUERYRBINFO;
  TSHQueryRBInfo = SHQUERYRBINFO;

const
  shell32 = 'shell32.dll';

function SHQueryRecycleBinA(pszRootPath: PAnsiChar;
  var pSHQueryRBInfo: TSHQueryRBInfo): HResult; stdcall;
  external shell32 name 'SHQueryRecycleBinA';
function SHQueryRecycleBinW(pszRootPath: PWideChar;
  var pSHQueryRBInfo: TSHQueryRBInfo): HResult; stdcall;
  external shell32 name 'SHQueryRecycleBinW';
function SHQueryRecycleBin(pszRootPath: PChar;
  var pSHQueryRBInfo: TSHQueryRBInfo): HResult; stdcall;
  external shell32 name 'SHQueryRecycleBinA';

function SHEmptyRecycleBinA(hWnd: HWND;
  pszRootPath: PAnsiChar;
  dwFlags: DWORD): HResult; stdcall;
  external shell32 name 'SHEmptyRecycleBinA';
function SHEmptyRecycleBinW(hWnd: HWND;
  pszRootPath: PWideChar;
  dwFlags: DWORD): HResult; stdcall;
  external shell32 name 'SHEmptyRecycleBinW';
function SHEmptyRecycleBin(hWnd: HWND;
  pszRootPath: PChar;
  dwFlags: DWORD): HResult; stdcall;
  external shell32 name 'SHEmptyRecycleBinA';

// Проверка и очистка корзины на локальном диске C:
  SHQueryRBInfo.cbSize := sizeof(TSHQueryRBInfo);
  hr := SHQueryRecycleBin(PChar('C:\'), SHQueryRBInfo);
  if
     Succeeded(hr)
     and
     (SHQueryRBInfo.i64NumItems > 0)
  then
  begin
    SHEmptyRecycleBin( Self.Handle, PChar('C:\'), 0 );
  end;