Beispiel #1
0
        /// <summary>
        /// Gets a <see cref="KnownFolderNative"/> object from an <see cref="IdList"/>
        /// based PIDL if this represents a knownfolder, or otherwise, null.
        /// </summary>
        /// <param name="ashellListId"></param>
        /// <returns></returns>
        internal static KnownFolderNative FromPIDL(IdList ashellListId)
        {
            bool isDesktop = true;

            if (ashellListId != null)
            {
                if (ashellListId.Size > 0)
                {
                    isDesktop = false;
                }
            }

            if (isDesktop == true)
            {
                return(KnownFolderHelper.FromPath(KF_IID.ID_FOLDERID_Desktop, true));
            }

            IntPtr pidl = default(IntPtr);

            try
            {
                pidl = PidlManager.IdListToPidl(ashellListId);

                KnownFolderManagerClass knownFolderManager = new KnownFolderManagerClass();

                IKnownFolderNative iknownFolder;
                HRESULT            hr = knownFolderManager.FindFolderFromIDList(pidl, out iknownFolder);

                return((hr == HRESULT.S_OK) ? new KnownFolderNative(iknownFolder) : null);
            }
            finally
            {
                pidl = PidlManager.ILFree(pidl);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Populates an object that contains a known folder's properties
        /// as specified by a special path stated in <paramref name="path"/>.
        /// </summary>
        /// <param name="path">The path for the requested known folder; (a virtual path).</param>
        /// <returns>A known folder representing the specified name.</returns>
        public static IKnownFolderProperties GetFolderPropertiesFromPath(string path)
        {
            using (var kf = KnownFolderHelper.FromPath(path))
            {
                if (kf != null)
                {
                    return(KnownFolderHelper.GetFolderProperties(kf.Obj));
                }
            }

            return(null);
        }