如何使用C#从recyclebin中删除多个选定项?
如何使用C#从recyclebin中删除多个选定项?,c#,windows,shell32,C#,Windows,Shell32,如何通过C#或windows api删除多个项目,我已经搜索了很长时间,但没有解决方案。我使用Shell32.dll中的FolderItemVerb逐个删除文件,但同时会弹出一个对话框。如果你知道如何解决这个问题,我将不胜感激。谢谢。首先,将System.Runtime.InteropService添加到您的项目中。我们将使用SHEmptyRecycleBin方法,该方法接受3个参数。 然后使用DllImport在类中导入Shell32.dll [DllImport("Shell32.dll")
如何通过C#或windows api删除多个项目,我已经搜索了很长时间,但没有解决方案。我使用Shell32.dll中的FolderItemVerb逐个删除文件,但同时会弹出一个对话框。如果你知道如何解决这个问题,我将不胜感激。谢谢。首先,将System.Runtime.InteropService添加到您的项目中。我们将使用
SHEmptyRecycleBin
方法,该方法接受3个参数。
然后使用DllImport
在类中导入Shell32.dll
[DllImport("Shell32.dll")]
static extern int SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath, RecycleFlag dwFlags);
然后为RecycleBin标志(dwFlags)定义一个枚举。这些值是十六进制的
enum RecycleFlag : int
{
SHERB_NOCONFIRMATION = 0x00000001, // No confirmation
SHERB_NOPROGRESSUI = 0x00000001, // No progress tracking window
SHERB_NOSOUND = 0x00000004 // No sound played
}
将以下代码放置在空回收站按钮中,该按钮调用Shell32.dll中的系统方法,如下所示:
SHEmptyRecycleBin(IntPtr.Zero, null, RecycleFlag.SHERB_NOSOUND | RecycleFlag.SHERB_NOCONFIRMATION);
参考资料:这不是为心脏虚弱的人准备的强> 与Windows兼容的代码>=Vista,无XP!XP代码在末尾
这是我第一次看Shell32接口。。。哇!即使是最简单的事情也是复杂的:-)但是,COM总是复杂的。。。现在有2.5个相互竞争的数据结构/接口用于处理Shell中的文件
IShellFolder
(旧的COM接口,本示例中未使用)、IShellItem
(新的COM接口,本示例中使用)、IDLIST
(此处用作PIDLIST\u ABSOLUTE
,用于“收集”多个文件放在一起。我认为0.5可能对你有帮助…这里有一个C语言的例子:你需要的例子是以://开头的,在一个实际的程序中,你不会硬编码一个固定的限制。我使用“Shell32.dll”导出函数。谢谢你的回答,但我不想清空recyclebin,我只想删除选定的文件。