/// <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); } }
/// <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); }