C# 系统应用之清空回收站操作

由于毕业设计项目是基于U盘防御的软件,所以涉及些系统应用的知识.本文主要讲述的是如何通过C#代码实现清空回收站的资源.主要通过SHEmptyRecycleBin函数实现.

一.SHEmptyRecycleBin函数

SHEmptyRecycleBin函数功能是清空指定驱动的回收站.函数如下:

HRESULT SHEmptyRecycleBin(
HWND hwnd,                    //父窗口句柄
LPCTSTR pszRootPath,          //将要清空的回收站的地址
DWORD dwFlags                 //用于清空回收站的功能参数
);

该函数在shell32.dll下,其中LPCTSTR pszRootPath指向要清空的回收站的地址,如果为空时,则清空所有驱动器上的回收站.dwFlags参数可以有三个不同的值,可为一个或多个组合,用以设定是否要弹出系统对话框、是否显示删除进度条的UI和当删除完成时,是否播放声音.

const int SHERB_NOCONFIRMATION = 0x000001;   //不显示确认删除的对话框
const int SHERB_NOPROGRESSUI = 0x000002;     //不显示删除过程的进度条
const int SHERB_NOSOUND = 0x000004;          //当删除完成时,不播放声音

清空回收站中的文件的SHEmptyRecycleBin是一个内核API方法,该方法在C#中需要手动的引入方法所在的类库.同时因为调用了Windows API,所以要添加对System.Runtime.IneropServices命名空间的引用;该方法在C#中的声明语法如下:

DllImportAttribute("shell32.dll")]         //声明API函数
private static extern int SHEmptyRecycleBin(IntPtr handle, string root, int falgs);

二.源代码

程序代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace ClearRecycle
{
    public partial class Form1 : Form
    {
        const int SHERB_NOCONFIRMATION = 0x000001;   //不显示确认删除的对话框
        const int SHERB_NOPROGRESSUI = 0x000002;     //不显示删除过程的进度条
        const int SHERB_NOSOUND = 0x000004;          //当删除完成时,不播放声音

        public Form1()
        {
            InitializeComponent();
        }

        [DllImportAttribute("shell32.dll")]          //声明API函数
        private static extern int SHEmptyRecycleBin(IntPtr handle, string root, int falgs);

        //点击"清空回收站"按钮
        private void button1_Click(object sender, EventArgs e)
        {
            SHEmptyRecycleBin(this.Handle, "", SHERB_NOCONFIRMATION + SHERB_NOPROGRESSUI + SHERB_NOSOUND);
        }
    }
}

代码中dwFlags值为“SHERB_NOCONFIRMATION + SHERB_NOPROGRESSUI + SHERB_NOSOUND”表示删除时不显示确认删除对话框,不显示删除过程的进度条,同时不播放声音.如果不指定预设状态,为0时会弹出系统的对话框和声音.

三.运行结果

如果SHEmptyRecycleBin(this.Handle,"",0);时提示如下确认删除对话框,如果项目过多时会显示删除的进度条.

如果删除文件时,没有显示声音,可以通过控制面板上面修改.如下图所示:

该文章主要是结合自己的毕业设计部分,同时查看相应书籍和参考下面几位博主完成.是一篇基础性应用文章,希望大家关注level up的文章,他的文章真心有用,似乎是台湾的一位智者.也将是我将来学习的主要对象.非常感谢他带来这么有用的系列文章.http://www.dotblogs.com.tw/larrynung/archive/2012/09/26/75065.aspx
最后希望该文章对大家有所帮助,如果有不足或错误的地方见谅!由于参考的令几篇文章都是转载,没有找到原作者,但同样感谢!
(By:Eastmount 2014-1-17 晚9点http://blog.csdn.net/eastmount)

时间: 2024-12-22 22:49:45

C# 系统应用之清空回收站操作的相关文章

win7系统电脑无法清空回收站怎么办?

  win7系统电脑无法清空回收站怎么办? 1.进入资源管理器,打开"文件夹选项"; 2.切换到"查看",勾选"隐藏受保护的操作系统文件"以及"显示隐藏的文件和文件夹",并点击确定; 3.设置完成后,依次在各个磁盘分区查找"RECYCLER"文件夹,并将其里面的内容删除即可. 方法二: 1.打开资源管理器,右击被删除文件所在磁盘,选择"属性"; 2.切换到"工具",点

给win7系统右键快捷菜单增加“清空回收站”和“重启”功能的方法

有时候我们为了方便操作,经常会给一些程序或者系统功能添加快捷方式,这样的话可以节省很多的时间.win7系统的右键菜单就是一个十分不错的选择.当用户想要把最常用的清空回收站以及重新启动的系统功能添加到win7系统的时候,该怎么操作呢? 设置步骤: 1.在键盘上我们直接按下"Win+R"组合键调出"运行"菜单,接着大家在其中输入"regedit"指令进入"注册表编辑器",其次选定"HKEY_CLASSES_ROOTDir

用Visual C#来清空回收站

visual Visual C#作为下一代主流的程序开发语言,其语言功能的强大是众所周知的.并且又有一个内容十分丰富的程序开发包--.Net FrameWork SDK,作为他的后盾.这样就使得Visual C#有了一个充分发挥其本领的舞台.Visual C#的强大功能不仅表现在支持各类数据库的数据处理方面,还表现对网络编程和文件处理等方面. 视窗操作系统的回收站是对文件一种保护措施,他主要是作用是不言而喻的.在新的视窗2000系统之中,当我把文件删除到回收站中以后,按动"清空回收站"

如何在win7电脑的右键菜单下添加清空回收站选项?

  关于咱们win7系统下载官网的右键菜单,想必大家都是十分熟悉的吧?很多时候,咱们都需要使用到右键菜单这个功能,比如说咱们可以使用右键菜单在电脑任意的目录中创建新的文件夹.创建快捷方式.创建一个word文件.一个excel文件,除了新建功能之外,右键菜单还可以执行操作.复制.粘贴,查看.重命名等多种功能,不过最近有的朋友突发奇想了,想要将清空回收站的选项放入win7系统下载官网的右键菜单中,那么咱们要如何才能实现呢?下面小编就来为大家讲述一下吧! 推荐系统:win7 32位旗舰版下载 1.首先

清空回收站还是显示为满怎么办?

  一般来说,想要回收站里的文件不占内存,我们一般一段时间会清理一次!但是有时在清理的过程中,会碰到一些问题,就如明明是清理干净的回收站,却还是被显示已占满,这是怎么回事呢?要怎么解决?现在一起去看看吧! 原因分析: 出现这种现象,多半是Windows Server 2008系统磁盘分区中存在明显的错误或者硬盘存在坏道. 问题解决: 首先用鼠标双击Windows Server 2008系统桌面中的"计算机"图标,在其后窗口中单击"工具"/"文件夹选项&qu

无法清空回收站怎么办

  在F盘删除了一个名为"dvdregionfree3031"的文件,系统出现了问题,就是在回收站的内容无法清空,而且每次打开回收站的时候,都会先搜索一遍,然后在清空回收站的时候提示确认删除,但选择"是"后,再次打开回收站,又出现了上面的问题. 这种情况,启动到安全模式中,然后对每个分区下的"Recycled"目录下,执行"Attrib-s-r-h"去除特殊属性,然后使用"Del"命令,删除每个分区下的&q

Windows Server 2008无法清空回收站解决方法

http://www.aliyun.com/zixun/aggregation/32995.html">在Windows Server 2008系统环境下,11545.html">我们有时会看到系统桌面上的回收站图标显示为满的,可是用鼠标双击该图标进入回收站窗口后,发现 里面什么内容也没有,再用鼠标右键单击该回收站图标,并执行快捷菜单中的"清空回收站"命令时,系统仍然 还会出现"是否要删除--"这样的提示信息.面对这样的奇怪故障,我们

用Delphi编写清空回收站程序

本程序演示如何通过程序来清空回收站. 向窗体上添加一个TButton组件,它用于激活清空回收站的操作.设计完成的主界面如图1所示. 图1 主界面 首先在程序的implementation段中定义3个常数和一个类型声明,代码如下: const SHERB_NOCONFIRMATION = $00000001 ; SHERB_NOPROGRESSUI = $00000002 ; SHERB_NOSOUND = $00000004 ; type TSHEmptyRecycleBin=function(

顶尖数据恢复软件清空回收站的文件怎么恢复?

  电脑认知比较强的用户都知道,回收站清空的文件只是所占的硬盘空间被释放了出来,而其具体的数据还保存在电脑中的,只有新的数据写入覆盖它所释放的空间,清空的文件才会被彻底的删除.所以一般情况下我们是无法看见被清空文件的,只有通过恢复工具对回收站进行扫描,我们才能找到被清空的文件,进而才能对其进行恢复,这里小编就给大家推荐一款功能性非常强的恢复工具--顶尖数据恢复软件,下面我们就一起来看看这个软件是怎么恢复清空回收站文件的吧! 恢复前的准备: 1)下载顶尖数据恢复软件,然后安装程序,该软件能兼容所有