关闭

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

标签: 清空回收站C#系统应用SHEmptyRecycleBin函数
2991人阅读 评论(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)

1
0
查看评论

SHQueryRecycleBin

具体思路传一个SHQUERYRBINFO结构给SHQueryRecycleBin然后取得回收站信息保存在SHQUERYRBINFO结构里面,再显示出来,而后使用SHEmptyRecycleBin采取静默方式清空回收站. 代码如下: #include #include #i...
  • xlf13872135090
  • xlf13872135090
  • 2012-11-29 15:04
  • 1166

Ubuntu 强制清空回收站

因为Ubuntu 8.04的回收站路径已经改变为:$HOME/.local/share/Trash/ 使用如下命令强制清空回收站 # rm -fr $HOME/.local/share/Trash/files/*
  • dearwind153
  • dearwind153
  • 2016-07-15 11:35
  • 2768

Linux中用命令清空回收站

如果你是以一般用户名登录的,那么在root权限下删除的文件将不能使用界面清空回收站,这样的话就只能命令将之清空了 Red Hat 企业版    在命令行下 使用指令清空回收站  [登录名@...
  • macrossdzh
  • macrossdzh
  • 2010-01-02 10:16
  • 30564

linux下命令清空回收站

命令行强制清空回收站 回收站其实就是一个文件夹,存放被删掉的文件。 ubuntu 回收站的具体位置是: $HOME/.local/share/Trash/ 进到这个目录下直接rm掉所有文件: sudo rm -fr $HOM...
  • ZCF1002797280
  • ZCF1002797280
  • 2012-09-22 23:12
  • 3121

【Ubuntu】清除回收站命令

在终端输入此命令:sudo rm -rf ~/.local/share/Trash/* 查看原文:http://www.boyemaker.com/2016/09/08/%e3%80%90ubuntu%e3%80%91%e6%b8%85%e9%99%a4%e5%9b%9e%e6%94%b6%e7%a...
  • booboyo
  • booboyo
  • 2016-09-08 18:20
  • 432

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

来自:http://outofmemory.cn/code-snippet/830/C-delete-file-wenjianjia-come-huishouzhan-code using System; using Microsoft.VisualBasic.FileIO; namespace ...
  • ArvinStudy
  • ArvinStudy
  • 2013-02-05 11:03
  • 1093

oracle11G 清空回收站方法

oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表。 1.查看回收站 select * from user_recyclebin; 2.清空回收站 purge recyclebin; 3.清空回收站中的某个表 --如...
  • make_zhf
  • make_zhf
  • 2017-06-15 14:03
  • 973

Ubuntu——命令行下清除回收站

近几天电脑ubuntu什么都好,就是GUI下的操作接二连三都躺了,没办法,命令行来吧!清除回收站sudo rm -rf ~/.local/share/Trash/*其实如果不在GUI里删除文件,一般都会被直接rm删光光。
  • C_SESER
  • C_SESER
  • 2017-08-01 02:27
  • 1777

oracle操作之清空回收站

查看那些对象被删除至回收站:       select * from user_recyclebin; 清空回收站中的某个表:      purge table orgin_table_name;     purge i...
  • fycghy0803
  • fycghy0803
  • 2013-10-24 21:46
  • 705

linux 下清空回收站命令

     linux 下清空回收站命令sudo rm -fr /root/.Trash/ 
  • nengyu
  • nengyu
  • 2007-05-24 09:18
  • 11345
    个人资料
    • 访问:2326234次
    • 积分:21610
    • 等级:
    • 排名:第413名
    • 原创:270篇
    • 转载:10篇
    • 译文:0篇
    • 评论:1651条
    个人博客
    作者:杨秀璋
    学历:本科-北京理工大学
               硕士-北京理工大学
    现任教于贵财财经大学信息学院
    http://www.eastmountyxz.com

    简介:自幼受贵州大山的熏陶,养成了诚实质朴的性格。经过寒窗苦读,考入BIT,为完成自己的教师梦,放弃IT、航天等工作,成为贵财一名大学教师,并想把自己所学所感真心传授给自己的学生,帮助更多陌生人。

    贵州纵美路迢迢,
    为负劳心此一遭。
    收得破书三四本,
    也堪将去教尔曹。

    娜美人生,醉美生活。
    他和她经历风雨,慢慢变老。
    博客专栏
    牛人博客
    最新评论