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

标签: 清空回收站 C#系统应用 SHEmptyRecycleBin函数
3093人阅读 评论(0) 收藏 举报
分类:

由于毕业设计项目是基于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)

查看评论

c#回收站相关函数

清空回收站,可调用SHEmptyRecycleBin 函数,在shell32.dll,dwFlags参数指定清空回收站时,是否显示提示操作的对话框?显示删除过程的进度条? 静音操作?注意:SHEmpt...
  • rfezgc
  • rfezgc
  • 2009-11-22 20:49:00
  • 1389

C# 演示如何清空系统回收站附源代码

  • 2010年03月03日 15:41
  • 14KB
  • 下载

C#动态删除文件并清空回收站的演示程序

  • 2014年07月15日 20:15
  • 21KB
  • 下载

C#删除文件和文件夹到回收站的代码

来自:http://outofmemory.cn/code-snippet/830/C-delete-file-wenjianjia-come-huishouzhan-code using Syst...
  • ArvinStudy
  • ArvinStudy
  • 2013-02-05 11:03:03
  • 1197

(转)用Visual C#来清空回收站

 Visual C#作为下一代主流的程序开发语言,其语言功能的强大是众所周知的。并且又有一个内容十分丰富的程序开发包--.Net FrameWork SDK,作为他的后盾。这样就使得Visual...
  • jianxia_wzx
  • jianxia_wzx
  • 2014-01-16 22:42:03
  • 1063

Win10 清空回收站

用管理员帐户登录Win10系统,然后以管理员身份运行命令提示符,在打开的“管理员:命令提示符”窗口中输入以下命令:   rd /s c:\$Recycle.Bin...
  • hyb1234hi
  • hyb1234hi
  • 2017-04-28 12:44:19
  • 96

C#清理Windows系统<em>回收站</em>

C#动态删除文件并<em>清空回收站</em>的演示程序 立即下载 上传者: yuanmashijie 时间: ...上传者: wandadnaw 时间: 2016-08-<em>23</em> 综合评分: 0 积分/<em>C</em>币:3 windows系...
  • 2018年04月14日 00:00

C# 清空回收站程序

  • 2009年04月13日 00:44
  • 17KB
  • 下载

删除文件到回收站中

/***************删除文件到回收站中*******************pszPath  : 待删除的全路径文件名bDelete  : TRUE 删除,不移到回收站,FALSE:移到回...
  • laiyiling
  • laiyiling
  • 2005-01-05 09:16:00
  • 3295

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

本文主要讲述的是如何通过C#代码实现清空回收站的资源.主要通过SHEmptyRecycleBin函数实现.主要讲解该函数的具体功能及参数含义,同时通过实例实现清空回收站.希望对大家有所帮助....
  • Eastmount
  • Eastmount
  • 2014-01-17 20:55:32
  • 3093
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 253万+
    积分: 2万+
    排名: 398
    牛人博客
    博客专栏
    最新评论