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
|
[DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
static extern uint SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath,RecycleFlags dwFlags);
[DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
static extern int SHQueryRecycleBin(string pszRootPath, ref SHQUERYRBINFO pSHQueryRBInfo);
enum RecycleFlags : uint {
SHERB_NOCONFIRMATION = 0x00000001,
SHERB_NOPROGRESSUI = 0x00000002,
SHERB_NOSOUND = 0x00000004
}
[StructLayout(LayoutKind.Explicit, Size=20)]
public struct SHQUERYRBINFO{
[FieldOffset(0)] public int cbSize ;
[FieldOffset(4)] public long i64Size ;
[FieldOffset(12)] public long i64NumItems ;
}
// vide la poubelle (avec ou sans confirmation)
public static uint emptyRecycleBin(bool disableConfirmation) {
uint retour;
if (disableConfirmation) {
retour = SHEmptyRecycleBin(IntPtr.Zero, null, RecycleFlags.SHERB_NOCONFIRMATION);
} else {
retour = SHEmptyRecycleBin(IntPtr.Zero, null, 0);
}
return retour;
}
// récupère des infos sur le contenu de la poubelle
public static SHQUERYRBINFO getInfosFromRecycleBin() {
SHQUERYRBINFO sqrbi = new SHQUERYRBINFO();
sqrbi.cbSize = Marshal.SizeOf(typeof(SHQUERYRBINFO));
int hresult = SHQueryRecycleBin(string.Empty, ref sqrbi);
return sqrbi;
} |
Partager