Per svuotare il cestino in C# si devere ricorrere alle API di Windows e a codice Unmanaged.
Creiamo prima di tutto un’enumerazione contenente le opzioni da passare come parametro alla funzione che andremo ad usare:
enum RecycleFlags : int
{
// Nessuna finestra di conferma
SHERB_NOCONFIRMATION = 0x00000001,
// Nessuna finestra di progresso
SHERB_NOPROGRESSUI = 0x00000001,
// Nessun suono
SHERB_NOSOUND = 0x00000004
}
Dal commento possiamo già capire a cosa serve ogni elemento dell’enumerazione.
Quindi importiamo la funzione delle API:
// SHEmptyRecycleBin si trova in Shell32.dll
[DllImport("Shell32.dll")]
// La funzione SHEmptyRecycleBin
static extern int SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath, RecycleFlags dwFlags);
Usarla ora è semplicissimo:
// Svuotiamo il cestino
SHEmptyRecycleBin(IntPtr.Zero, null, RecycleFlags.SHERB_NOSOUND);
Ovviamente come terzo paramentro possiamo usare anche una combinazione degli elementi dell’enumerazione, tramite il simbolo |.


