예제 #1
0
        public static bool RecycleFile(string FullFilePath)
        {
            if (!System.IO.File.Exists(FullFilePath))
            {
                return(true);
            }

            IntPtr FilePathPtr = IntPtr.Zero;

            try
            {
                var FullFilePathPtrValue = FullFilePath + Convert.ToChar(0) + Convert.ToChar(0);
                FilePathPtr = Marshal.StringToHGlobalAuto(FullFilePathPtrValue);
                if (Is64BitProcess)
                {
                    var Operation = new SHFILEOPSTRUCTx64();
                    Operation.wFunc  = FO_Func.FO_DELETE;
                    Operation.pFrom  = FilePathPtr;
                    Operation.fFlags = FO_FileOp.FOF_ALLOWUNDO | FO_FileOp.FOF_NOCONFIRMATION | FO_FileOp.FOF_SILENT | FO_FileOp.FOF_NOERRORUI;
                    int Result = NativeMethodsx64.SHFileOperation(ref Operation);
                    return(Result == 0);
                }
                else
                {
                    var Operation = new SHFILEOPSTRUCTx86();
                    Operation.wFunc  = FO_Func.FO_DELETE;
                    Operation.pFrom  = FilePathPtr;
                    Operation.fFlags = FO_FileOp.FOF_ALLOWUNDO | FO_FileOp.FOF_NOCONFIRMATION | FO_FileOp.FOF_SILENT | FO_FileOp.FOF_NOERRORUI;
                    int Result = NativeMethods.SHFileOperation(ref Operation);
                    return(Result == 0);
                }
            }
            finally
            {
                if (FilePathPtr != IntPtr.Zero)
                {
                    Marshal.Release(FilePathPtr);
                }
            }
        }
 public static extern int SHFileOperation(ref SHFILEOPSTRUCTx64 FileOp);
예제 #3
0
 public static extern int SHFileOperation(ref SHFILEOPSTRUCTx64 FileOp);