程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 系統應用之清空回收站操作

C# 系統應用之清空回收站操作

編輯: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)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved