SHEmptyRecycleBin (shell32)
Last changed: -91.118.56.136

.
Summary

C# Signature:

[DllImport("shell32.dll")]
static extern int SHEmptyRecycleBin(IntPtr hWnd, string pszRootPath,
   uint dwFlags);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

If you are interested in this you might want to use the SHFileOperation to move things to the recycle bin.

Sample Code:

Here is a simple example of calling based on the above declaration. Specifying 'rootPath' will empty the recycle bin of a specific drive.

    public class ShellBin
    {
        [DllImport("shell32.dll")]
        static extern int SHEmptyRecycleBin(IntPtr hWnd, string pszRootPath, uint dwFlags);

        //     No dialog box confirming the deletion of the objects will be displayed.
        const int SHERB_NOCONFIRMATION = 0x00000001;
        //     No dialog box indicating the progress will be displayed.
        const int SHERB_NOPROGRESSUI = 0x00000002;
        //     No sound will be played when the operation is complete.
        const int SHERB_NOSOUND = 0x00000004;

        public static void EmptyRecycleBin()
        {
            BinUtils.EmptyRecycleBin ( string.Empty );
        }

        public static void EmptyRecycleBin( string rootPath )
        {
            int hresult = SHEmptyRecycleBin(IntPtr.Zero, rootPath,
                    SHERB_NOCONFIRMATION | SHERB_NOPROGRESSUI | SHERB_NOSOUND);
            System.Diagnostics.Debug.Write(hresult);
        }
    }

Alternative Managed API:

Omnicoder's Managed Windows API: http://www.fileden.com/files/2008/4/5/1852663/ManWinAPI.zip

Documentation

FYI, couldn't find documentation for this but if the recycle bin is already empty, it will return -2147418113 (0x8000FFFF (E_UNEXPECTED))