Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#从recyclebin中删除多个选定项?_C#_Windows_Shell32 - Fatal编程技术网

如何使用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,我只想删除选定的文件。