Holger Stehle

Softwareentwicklung und -architektur

« Papierkorb leeren

Um den Papierkorb zu leeren gibt es leider keine in verwaltetem Code zur Verfügung stehende Funktionalität des .NET-Frameworks für C#. Es ist also – wieder einmal – an der Zeit für DllImport.

Wir werden dazu eine Klasse RecycleBin mit integrierten RecycleFlags erstellen:

public static class RecycleBin {
    public static void Clear(RecycleFlags recycleFlags = RecycleFlags.None) {
        SHEmptyRecycleBin(IntPtr.Zero, null, recycleFlags);
    }


    [DllImport("shell32")]
    private static extern uint SHEmptyRecycleBin(
        IntPtr hwnd, string pszRootPath, RecycleFlags dwFlags
    );

    public enum RecycleFlags : uint {
        None           = 0x0,  // Standardverhalten
        NoConfirmation = 0x1,  // keine Rückfrage zur Bestätigung
        NoProgressUI   = 0x2,  // keine Fortschrittsanzeige
        NoSound        = 0x4   // kein Abschlussgeräusch
    }
}

Die Verwendung gestaltet sich nun wieder gewohnt einfach:

  // Papierkorb leeren (Standard)
RecycleBin.Clear();

  // Papierkorb ohne Rückfrage leeren
RecycleBin.Clear(RecycleBin.RecycleFlags.NoConfirmation);

Im MSDN gibt es wie üblich weitere Details zu SHEmptyRecycleBin.