Ejemplo n.º 1
0
        public FShellFolder[] ListFolder()
        {
            IntPtr ptr = IntPtr.Zero;

            if (_face.EnumObjects(_handle, EShcontf.Folders | EShcontf.IncludeHidden, out ptr) == RWinShell.S_OK)
            {
                IntPtr pidlSub;
                int    celtFetched;
                FObjects <FShellFolder> folders = new FObjects <FShellFolder>();
                IEnumIDList             list    = (IEnumIDList)Marshal.GetObjectForIUnknown(ptr);
                while (list.Next(1, out pidlSub, out celtFetched) == RWinShell.S_OK)
                {
                    if (celtFetched != RWinShell.S_FALSE)
                    {
                        break;
                    }
                    FShellFolder folder = new FShellFolder();
                    folder.Parent = this;
                    folder.SetHandle(pidlSub);
                    folder.RefreshInfo();
                    folders.Push(folder);
                }
                return(folders.ToArray());
            }
            return(null);
        }
Ejemplo n.º 2
0
        public void RefreshInfo()
        {
            // Name
            if (_parent != null && _parent is FShellFolder)
            {
                FShellFolder folder = (FShellFolder)_parent;
                _name = folder.GetSubObjectName(_handle);
            }
            // Info
            SShFileInfo    info = new SShFileInfo();
            EShGetFileInfo flag = EShGetFileInfo.Pidl |
                                  EShGetFileInfo.DisplayName |
                                  EShGetFileInfo.TypeName |
                                  EShGetFileInfo.Pidl |
                                  EShGetFileInfo.Icon |
                                  EShGetFileInfo.SmallIcon |
                                  EShGetFileInfo.SysIconIndex;
            IntPtr rsPtr = RShell32.SHGetFileInfo(FullPidl.Ptr, 0, ref info, Marshal.SizeOf(typeof(SShFileInfo)), flag);

            if (_name == null)
            {
                _name = info.szDisplayName;
            }
            _icon = info.iIcon;
        }
Ejemplo n.º 3
0
        internal FShellFolder SelectFolder(string path)
        {
            IntPtr       pidl = IntPtr.Zero;
            uint         i, j = 0;
            FShellFolder folder = new FShellFolder();

            _face.ParseDisplayName(_handle, IntPtr.Zero, path, out i, out pidl, ref j);
            folder._handle = pidl;
            _face.BindToObject(pidl, IntPtr.Zero, ref Guids.IID_IShellFolder, out folder._face);
            return(folder);
        }