如何使用c#代码清空回收站
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
 
 
namespace onitroad
{
	class DelTrash
	{
		static string progver = "1.00";
 
 
		static int Main( string[] args )
		{
			bool confirm = false;
			bool progress = false;
			RecycleFlags flags = RecycleFlags.RecycleNoSound;
			string drive = null; // default: All drives
			string windrive = Path.GetPathRoot( Environment.SystemDirectory );
 
 
			#region Parse Command Line
 
			if ( args.Length > 3 )
			{
				return ShowHelp( );
			}
 
			foreach ( string arg in args )
			{
				switch ( arg.ToUpper( ) )
				{
					case "/?":
						return ShowHelp( );
					case "/C":
						if ( confirm )
						{
							return ShowHelp( "Duplicate command line switch /C" );
						}
						confirm = true;
						break;
					case "/P":
						if ( progress )
						{
							return ShowHelp( "Duplicate command line switch /P" );
						}
						progress = true;
						break;
					case "/W":
						if ( drive != null )
						{
							if ( drive == windrive )
							{
								return ShowHelp( "Either specify a drive letter or use the /W switch, not both" );
							}
							else
							{
								return ShowHelp( "Duplicate drive specification {0} and {1}", drive, arg.ToUpper( ) );
							}
						}
						drive = windrive;
						break;
					default:
						bool validdrive = false;
						DriveInfo[] alldrives = DriveInfo.GetDrives( );
						foreach ( DriveInfo drvinf in alldrives )
						{
							if ( drvinf.Name == arg.ToUpper( ) + "\" )
							{
								validdrive = true;
								drive = arg.ToUpper( );
							}
						}
						if ( !validdrive )
						{
							return ShowHelp( "Invalid command line argument \"{0}\"", arg );
						}
						break;
				}
			}
 
			if ( !confirm )
			{
				flags |= RecycleFlags.RecycleNoConfirmation;
			}
			if ( !progress )
			{
				flags |= RecycleFlags.RecycleNoProgressUI;
			}
 
			#endregion Parse Command Line
 
 
			uint result = SHEmptyRecycleBin( IntPtr.Zero, drive, flags );
			if ( result == 0 )
			{
				return 0;
			}
			else
			{
				return 1;
			}
		}
 
 
		static int ShowHelp( params string[] errmsg )
		{
			#region Help Text
 
			if ( errmsg.Length > 0 )
			{
				List<string> errargs = new List<string>( errmsg );
				errargs.RemoveAt( 0 );
				Console.Error.WriteLine( );
				Console.ForegroundColor = ConsoleColor.Red;
				Console.Error.Write( "ERROR:\t" );
				Console.ForegroundColor = ConsoleColor.White;
				Console.Error.WriteLine( errmsg[0], errargs.ToArray( ) );
				Console.ResetColor( );
			}
 
			Console.Error.WriteLine( );
 
			Console.Error.WriteLine( "DelTrash.exe,  Version {0}", progver );
 
			Console.Error.WriteLine( "Empty the Recycle Bin" );
 
			Console.Error.WriteLine( );
 
			Console.Error.Write( "Usage:   " );
			Console.ForegroundColor = ConsoleColor.White;
			Console.Error.WriteLine( "DelTrash.exe  [ drive: | /W ]  [ /C ]  [ /P ]" );
			Console.ResetColor( );
 
			Console.Error.WriteLine( );
 
			Console.Error.Write( "Where:   " );
			Console.ForegroundColor = ConsoleColor.White;
			Console.Error.Write( "drive:" );
			Console.ResetColor( );
			Console.Error.WriteLine( "  empty recycle bin on this drive only (default: all drives)" );
 
			Console.ForegroundColor = ConsoleColor.White;
			Console.Error.Write( "         /W" );
			Console.ResetColor( );
			Console.Error.Write( "      empty recycle bin on " );
			Console.ForegroundColor = ConsoleColor.White;
			Console.Error.Write( "W" );
			Console.ResetColor( );
			Console.Error.WriteLine( "indows' drive only (default: all drives)" );
 
			Console.ForegroundColor = ConsoleColor.White;
			Console.Error.Write( "         /C" );
			Console.ResetColor( );
			Console.Error.Write( "      prompt for " );
			Console.ForegroundColor = ConsoleColor.White;
			Console.Error.Write( "C" );
			Console.ResetColor( );
			Console.Error.WriteLine( "onfirmation" );
 
			Console.ForegroundColor = ConsoleColor.White;
			Console.Error.Write( "         /P" );
			Console.ResetColor( );
			Console.Error.Write( "      show " );
			Console.ForegroundColor = ConsoleColor.White;
			Console.Error.Write( "P" );
			Console.ResetColor( );
			Console.Error.WriteLine( "rogress" );
 
			Console.Error.WriteLine( );
 
			Console.Error.WriteLine( "Note:    Return code is 0 if the Recycle Bin was emptied successfully, or 1" );
 
			Console.Error.WriteLine( "         if there was nothing to delete or in case of (command line) errors." );
 
			Console.Error.WriteLine( );
 
			#endregion Help Text
 
			return 1;
		}
 
 
		public enum RecycleFlags : uint
		{
			RecycleNoConfirmation = 0x00000001,
			RecycleNoProgressUI = 0x00000002,
			RecycleNoSound = 0x00000004
		}
 
 
		[DllImport( "Shell32.dll", CharSet = CharSet.Unicode )]
		static extern uint SHEmptyRecycleBin( IntPtr hwnd, string pszRootPath, RecycleFlags dwFlags );
	}
}
日期:2020-04-11 22:50:22 来源:oir作者:oir