Beispiel #1
0
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
        public IEnumerator <ShellObject> GetItems(ShellNativeMethods.ShellFolderEnumerationOptions shellFolderEnumerationOptions)
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member
        {
            if (NativeShellFolder == null)
            {
                if (desktopFolderEnumeration == null)
                {
                    ShellNativeMethods.SHGetDesktopFolder(out desktopFolderEnumeration);
                }

                nativeShellFolder = desktopFolderEnumeration;
            }

            return(new ShellFolderItems(this, shellFolderEnumerationOptions));
        }
        internal ShellFolderItems(ShellContainer nativeShellFolder, ShellNativeMethods.ShellFolderEnumerationOptions shellFolderEnumerationOptions = ShellNativeMethods.ShellFolderEnumerationOptions.Folders | ShellNativeMethods.ShellFolderEnumerationOptions.NonFolders)
        {
            this.nativeShellFolder = nativeShellFolder;

            HResult hr = nativeShellFolder.NativeShellFolder.EnumObjects(
                IntPtr.Zero,
                shellFolderEnumerationOptions,
                out nativeEnumIdList);


            if (!CoreErrorHelper.Succeeded(hr))
            {
                if (hr == HResult.Canceled)
                {
                    throw new System.IO.FileNotFoundException();
                }
                else
                {
                    throw new ShellException(hr);
                }
            }
        }