/// <summary> /// Returns the native known folder (IKnownFolderNative) given a PID list /// </summary> /// <param name="pidl"></param> /// <returns></returns> internal static IKnownFolderNative FromPIDL(IntPtr pidl) { KnownFolderManagerClass knownFolderManager = new KnownFolderManagerClass(); IKnownFolderNative knownFolder; HResult hr = knownFolderManager.FindFolderFromIDList(pidl, out knownFolder); return (hr == HResult.S_OK) ? knownFolder : null; }
/// <summary> /// Returns a known folder given a globally unique identifier. /// </summary> /// <param name="knownFolderId">A GUID for the requested known folder.</param> /// <returns>A known folder representing the specified name.</returns> /// <exception cref="System.ArgumentException">Thrown if the given Known Folder ID is invalid.</exception> public static IKnownFolder FromKnownFolderId(Guid knownFolderId) { IKnownFolderNative knownFolderNative; KnownFolderManagerClass knownFolderManager = new KnownFolderManagerClass(); HResult hr = knownFolderManager.GetFolder(knownFolderId, out knownFolderNative); if (hr != HResult.S_OK) { throw new Exception(hr.ToString()); } IKnownFolder kf = GetKnownFolder(knownFolderNative); if (kf == null) throw new ArgumentException("Invalid GUID", "knownFolderId"); else return kf; }
/* /// <summary> /// Returns a known folder given its shell path, such as <c>C:\users\public\documents</c> or /// <c>::{645FF040-5081-101B-9F08-00AA002F954E}</c> for the Recycle Bin. /// </summary> /// <param name="path">The path for the requested known folder; either a physical path or a virtual path.</param> /// <returns>A known folder representing the specified name.</returns> public static IKnownFolder FromPath(string path) { return KnownFolderHelper.FromParsingName(path); } */ /// <summary> /// Returns a known folder given its shell namespace parsing name, such as /// <c>::{645FF040-5081-101B-9F08-00AA002F954E}</c> for the Recycle Bin. /// </summary> /// <param name="parsingName">The parsing name (or path) for the requested known folder.</param> /// <returns>A known folder representing the specified name.</returns> /// <exception cref="System.ArgumentException">Thrown if the given parsing name is invalid.</exception> /// public static IKnownFolder FromParsingNameOnly(string parsingName) { var k = new KnownFolderManagerClass(); IKnownFolderNative folder = null; k.FindFolderFromPath(parsingName, 0, out folder); return (IKnownFolder)folder; }