Ниже приведен пример использования Win32 API функции SHFileOperation для перемещения файла или директории в корзину Windows. В случае перемещения директории в корзину, выбранная директория может содержать файлы и папки.

Текст приложения RemoveToRecycleBin на C#:

using System;
using System.Runtime.InteropServices;
using System.ComponentModel;

namespace RemoveToRecycleBin
{
	/// <summary>
	/// Summary description for RecycleBin.
	/// </summary>
	class RecycleBin
	{
		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
		internal struct SHFILEOPSTRUCT
		{
			public IntPtr hWnd;
			public UInt32 wFunc;
			public IntPtr pFrom;
			public IntPtr pTo;
			public UInt16 fFlags;
			public Int32 fAnyOperationsAborted;
			public IntPtr hNameMappings;
			[MarshalAs(UnmanagedType.LPWStr)]
			public string lpszProgressTitle;
		}
		[System.Runtime.InteropServices.DllImport("shell32.dll", CharSet = CharSet.Unicode, SetLastError=true)]
		public static extern int SHFileOperation(ref SHFILEOPSTRUCT lpFileOp);
		[STAThread]
		static void Main(string[] args)
		{
			int res;
			// полный путь к удаляемому файлу или папке
			// завершающий символ 
			string strPath = "C:\file_del.txt" + '';
			SHFILEOPSTRUCT FileOp = new SHFILEOPSTRUCT();
			FileOp.hWnd = IntPtr.Zero;
			// удаляем файл / папку
			FileOp.wFunc = (uint)0x0003;
			FileOp.pFrom = Marshal.StringToHGlobalUni(strPath);
			FileOp.pTo = IntPtr.Zero;
			// без подтверждения пользователя
			FileOp.fFlags = (ushort)(0x0004 | 0x0040 | 0x0010);
			FileOp.lpszProgressTitle = "";
			FileOp.fAnyOperationsAborted = 0;
			FileOp.hNameMappings = IntPtr.Zero;
			res = SHFileOperation(ref FileOp);
			if (res != 0)
			{
				// произошла ошибка
				Console.WriteLine("Error");
			}
			else
			{
				if (FileOp.fAnyOperationsAborted != 0)
				{
					// операция была прервана
					Console.WriteLine("Remove operation aborted");
				}
			}
		}
	}
}



Постоянные ссылки

При копировании ссылка на TeaM RSN обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.