閱讀989 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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的文章,他的文章真心有用,似乎是台灣的一位智者.也將是我將來學習的主要對象.非常感謝他帶來這麼有用的係列文章.https://www.dotblogs.com.tw/larrynung/archive/2012/09/26/75065.aspx
最後希望該文章對大家有所幫助,如果有不足或錯誤的地方見諒!由於參考的令幾篇文章都是轉載,沒有找到原作者,但同樣感謝!
(By:Eastmount 2014-1-17 晚9點https://blog.csdn.net/eastmount)

最後更新:2017-04-03 12:54:31

  上一篇:go 網站出現數據庫連接失敗,mysql 2003錯誤(10061) 的解決方法
  下一篇:go DateEdit控件時間格式轉換