예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }