Beispiel #1
0
        private List <ShellFileSystemFolder> GetFolders()
        {
            List <ShellFileSystemFolder> list = new List <ShellFileSystemFolder>();

            Guid shellItemArrayGuid = new Guid(ShellIIDGuid.IShellItemArray);

            HResult hr = nativeShellLibrary.GetFolders(ShellNativeMethods.LibraryFolderFilter.AllItems, ref shellItemArrayGuid, out var itemArray);

            if (!CoreErrorHelper.Succeeded(hr))
            {
                return(list);
            }

            itemArray.GetCount(out var count);

            for (uint i = 0; i < count; ++i)
            {
                itemArray.GetItemAt(i, out var shellItem);
                list.Add(new ShellFileSystemFolder(shellItem as IShellItem2));
            }

            if (itemArray != null)
            {
                Marshal.ReleaseComObject(itemArray);
                itemArray = null;
            }

            return(list);
        }
Beispiel #2
0
        private List <ShellFileSystemFolder> GetFolders()
        {
            List <ShellFileSystemFolder> list = new List <ShellFileSystemFolder>();
            IShellItemArray itemArray;

            Guid shellItemArrayGuid = new Guid(ShellIIDGuid.IShellItemArray);

            HRESULT hr = nativeShellLibrary.GetFolders(ShellNativeMethods.LIBRARYFOLDERFILTER.LFF_ALLITEMS, ref shellItemArrayGuid, out itemArray);

            if (!CoreErrorHelper.Succeeded((int)hr))
            {
                return(list);
            }

            uint count;

            itemArray.GetCount(out count);

            for (uint i = 0; i < count; ++i)
            {
                IShellItem shellItem;
                itemArray.GetItemAt(i, out shellItem);
                list.Add(new ShellFileSystemFolder(shellItem as IShellItem2));
            }

            if (itemArray != null)
            {
                Marshal.ReleaseComObject(itemArray);
                itemArray = null;
            }

            return(list);
        }