public override byte[] Persist() { using (MemoryStream ms = new MemoryStream()) { BinaryWriter w = new BinaryWriter(ms, Encoding.Default); w.Write(1); byte[] btFo = FileObject.ToByteArray(fo); w.Write((int)btFo.Length); w.Write(btFo, 0, btFo.Length); w.Write(path != null); if (path != null) { w.Write(path); } w.Write(name); return(ms.ToArray()); } /* * SerializeData sd = new SerializeData(); * sd.bIsFolder = false; * sd.pathData = PathData; * sd.n = n; * sd.rootName = PathString; * sd.name = name; * return Folder.ObjectToByteArray(sd); */ // return BitConverter.GetBytes(n); }
public override void NewFolder() { string spath = CreateNewFolder(path, "New Folder"); if (string.IsNullOrEmpty(spath)) { return; } //refrash all views IntPtr pParrent = ItemIdList.Create(null, PathData).Ptr; Shell32.SHChangeNotify(ShellChangeEvents.UpdateDir, ShellChangeFlags.IdList | ShellChangeFlags.Flush, pParrent, IntPtr.Zero); Marshal.FreeCoTaskMem(pParrent); // using (MemoryStream ms = new MemoryStream()) { FolderAttributes newFolderAttrs = FolderAttributes.Folder | FolderAttributes.HasPropSheet | FolderAttributes.CanMove | FolderAttributes.CanDelete | FolderAttributes.CanRename | FolderAttributes.CanCopy | FolderAttributes.CanLink | FolderAttributes.Browsable | FolderAttributes.DropTarget; BinaryWriter w = new BinaryWriter(ms, Encoding.Default); w.Write(0); w.Write(string.Format("{0}{1}{2}", path, FD, spath)); w.Write((int)newFolderAttrs); IFileObject foNew = new FileObject(); foNew.Name = spath; foNew.IsFolder = true; byte[] btFo = FileObject.ToByteArray(foNew); w.Write((int)btFo.Length); w.Write(btFo, 0, btFo.Length); byte[] persist = ms.ToArray(); IntPtr pNewFolder = ItemIdList.Create(null, new byte[][] { persist }).Ptr; if (ShellView != null) { ShellView.SelectItem(pNewFolder, _SVSIF.SVSI_EDIT | _SVSIF.SVSI_FOCUSED | _SVSIF.SVSI_ENSUREVISIBLE); } Marshal.FreeCoTaskMem(pNewFolder); } }