private static IShellItem CreateFolderShellItem(string path) { IShellItem shellItem; path = Path.GetFullPath(path); if (FileSystem.DoesPathExist(path)) { shellItem = CreateShellItem(path); } else { using (var bindCtxReleaser = new ComReleaser <IBindCtx>(NativeMethods.CreateBindCtx())) { IBindCtx bindCtx = bindCtxReleaser.ComObject; bindCtx.RegisterObjectParam ( NativeMethods.STR_FILE_SYS_BIND_DATA, CreateFolderIfDoesntExistsFileSystemBindData ); shellItem = CreateShellItem(path, bindCtx); } } return(shellItem); }
internal void AddDeleteFileOperation(DeleteFileOperation deleteFileOperation) { using (var file = new ComReleaser <IShellItem>(CreateShellItem(deleteFileOperation.FilePath))) { this.fileOperation.DeleteItem(file.ComObject, null); } }
internal void AddRenameFileOperation(RenameFileOperation renameFileOperation) { using (var file = new ComReleaser <IShellItem>(CreateShellItem(renameFileOperation.FilePath))) { this.fileOperation.RenameItem(file.ComObject, renameFileOperation.NewFileName, null); } }
internal void AddNewFileOperation(NewFileOperation newFileOperation) { using (var destFolder = new ComReleaser <IShellItem>(CreateFolderShellItem(newFileOperation.DestinationFolderPath))) { this.fileOperation.NewItem ( destFolder.ComObject, (FILE_ATTRIBUTE)newFileOperation.FileAttributes, newFileOperation.FileName, newFileOperation.TemplateName, null ); } }
private void AddMoveCopyItem ( MoveCopyFileOperation moveCopyFileOperation, AddMoveCopyOperationAction addMoveCopyOperationAction ) { using (var sourceFile = new ComReleaser <IShellItem>(CreateShellItem(moveCopyFileOperation.SourceFilePath))) using (var destFolder = new ComReleaser <IShellItem>(CreateFolderShellItem(moveCopyFileOperation.DestionationFolderPath))) { addMoveCopyOperationAction ( sourceFile.ComObject, destFolder.ComObject, moveCopyFileOperation.FileName, null ); } }