public void UpdateRecycleBinInfos() {
var allDrives = Directory.GetLogicalDrives();
int count = 0;// (int)sqrbi.i64NumItems;
long size = 0;// sqrbi.i64Size;
//Task.Run(() => {
foreach (var drive in allDrives) {
var sqrbi = new BExplorer.Shell.Interop.Shell32.SHQUERYRBINFO() { cbSize = 24 };
//char[] charsToTrim = { Char.Parse(@"\") };
int hresult = BExplorer.Shell.Interop.Shell32.SHQueryRecycleBin(drive, ref sqrbi);
count += (int)sqrbi.i64NumItems;
size += (long)sqrbi.i64Size;
}
Dispatcher.Invoke(DispatcherPriority.Background,
(Action)(() => {
if (count > 0) {
miRestoreALLRB.Visibility = Visibility.Visible;
miEmptyRB.Visibility = Visibility.Visible;
btnRecycleBin.LargeIcon = @"..\Images\RecycleBinFull32.png";
btnRecycleBin.Icon = @"..\Images\RecycleBinFull16.png";
btnRecycleBin.UpdateLayout();
lblRBItems.Visibility = Visibility.Visible;
lblRBItems.Text = String.Format("{0} Items", count);
lblRBSize.Text = ShlWapi.StrFormatByteSize(size);
lblRBSize.Visibility = Visibility.Visible;
} else {
miEmptyRB.Visibility = Visibility.Collapsed;
miRestoreALLRB.Visibility = Visibility.Collapsed;
miRestoreRBItems.Visibility = Visibility.Collapsed;
btnRecycleBin.LargeIcon = @"..\Images\RecycleBinEmpty32.png";
btnRecycleBin.Icon = @"..\Images\RecycleBinEmpty16.png";
lblRBItems.Text = "0 Items";
lblRBItems.Visibility = Visibility.Collapsed;
lblRBSize.Text = "0 bytes";
lblRBSize.Visibility = Visibility.Collapsed;
}
}));
}