If we delete file or folder using C# code, it will be deleted from system permanently. Yesterday I was searching for a solution, which helps me to delete file to recycle bin. There is no direct API* available in .Net which helps me to achieve this. Later I found an option using SHFileOperation function. And here is the implementation, which help to delete file or folder to Recyclebin.
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 1)]
public struct SHFILEOPSTRUCT
public IntPtr hwnd;
public int wFunc;
public string pFrom;
public string pTo;
public short fFlags;
public bool fAnyOperationsAborted;
public IntPtr hNameMappings;
public string lpszProgressTitle;
[DllImport("shell32.dll", CharSet = CharSet.Auto)]
public static extern int SHFileOperation(ref SHFILEOPSTRUCT FileOp);
public const int FO_DELETE = 3;
public const int FOF_ALLOWUNDO = 0x40;
public const int FOF_NOCONFIRMATION = 0x10;
And you can use this function like this
var shf = new Win32.SHFILEOPSTRUCT();
shf.wFunc = Win32.FO_DELETE;
shf.fFlags = Win32.FOF_ALLOWUNDO;
shf.pFrom = @"c:\myfile.txt" + '\0' + '\0';
The pFrom parameter can be either file or folder.
* This is not 100% true. We can do this by using Microsoft.VisualBasic namespace. And here is the implementation.
string path = @"c:\myfile.txt";