public ShellFileOperation() { // set default properties this.operationFlags = ShellFileOperationFlags.Allowundo | ShellFileOperationFlags.Multidestfiles | ShellFileOperationFlags.NoConnectedElements | ShellFileOperationFlags.Wantnukewarning; this.progressTitle = ""; }
public ShellFileOperation() { // set default properties Operation = FileOperations.FO_COPY; OwnerWindow = IntPtr.Zero; OperationFlags = ShellFileOperationFlags.FOF_ALLOWUNDO | ShellFileOperationFlags.FOF_MULTIDESTFILES | ShellFileOperationFlags.FOF_NO_CONNECTED_ELEMENTS | ShellFileOperationFlags.FOF_WANTNUKEWARNING; ProgressTitle = ""; }
public bool DoOperation() { if (Silent) { OperationFlags |= ShellFileOperationFlags.FOF_NOCONFIRMATION; } ShellApi.SHFILEOPSTRUCT FileOpStruct = new ShellApi.SHFILEOPSTRUCT(); FileOpStruct.hwnd = OwnerWindow; FileOpStruct.wFunc = (uint)Operation; String multiSource = StringArrayToMultiString(SourceFiles); String multiDest = StringArrayToMultiString(DestFiles); FileOpStruct.pFrom = Marshal.StringToHGlobalUni(multiSource); FileOpStruct.pTo = Marshal.StringToHGlobalUni(multiDest); FileOpStruct.fFlags = (ushort)OperationFlags; FileOpStruct.lpszProgressTitle = ProgressTitle; FileOpStruct.fAnyOperationsAborted = 0; FileOpStruct.hNameMappings = IntPtr.Zero; int RetVal; RetVal = ShellApi.SHFileOperation(ref FileOpStruct); ShellApi.SHChangeNotify( (uint)ShellChangeNotificationEvents.SHCNE_ALLEVENTS, (uint)ShellChangeNotificationFlags.SHCNF_DWORD, IntPtr.Zero, IntPtr.Zero); if (RetVal != 0) { return(false); } if (FileOpStruct.fAnyOperationsAborted != 0) { return(false); } return(true); }