public void KnownFolderManager_GetKnownFolder() { IKnownFolderManager manager = ShellMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.Windows); folder.Should().NotBeNull(); }
public void KnownFolderManager_implements_IKnownFolderManager() { KnownFolderManager obj = new KnownFolderManager(); IKnownFolderManager knownFolderManager = (IKnownFolderManager)obj; Assert.IsNotNull(knownFolderManager); }
public void KnownFolder_GetRedirectionCaps() { IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.Libraries); folder.GetRedirectionCapabilities().Should().Be(KF_REDIRECTION_CAPABILITIES.REDIRECTABLE); }
/// <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; IKnownFolderManager knownFolderManager = (IKnownFolderManager) new KnownFolderManagerClass(); HRESULT hr = knownFolderManager.GetFolder(knownFolderId, out knownFolderNative); if (hr == HRESULT.S_OK) { IKnownFolder kf = GetKnownFolder(knownFolderNative); if (kf != null) { return(kf); } else { throw new ArgumentException("Given Known Folder ID is invalid.", "knownFolderId"); } } else { throw Marshal.GetExceptionForHR((int)hr); } }
public void KnownFolder_GetId() { IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.Windows); folder.GetId().Should().Be(KNOWNFOLDERID.Windows); }
public void KnownFolder_GetCategory() { IKnownFolderManager manager = ShellMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KnownFolderIds.Windows); folder.GetCategory().Should().Be(KnownFolderCategory.Fixed); }
public void KnownFolder_GetCategory() { IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.Windows); folder.GetCategory().Should().Be(KF_CATEGORY.FIXED); }
/// <summary>Retrieves the path of a known folder</summary> /// <param name="knownFolderId">GUID of the known folderparam> /// <returns>The path of the known folder with the specified GUID</returns> private static string getKnownFolder(Guid knownFolderId) { var instance = new KnownFolderManagerImpl(); if (instance == null) { throw new COMException("Could not create instance of known folder manager coclass"); } IKnownFolderManager knownFolderManager = instance as IKnownFolderManager; if (knownFolderManager == null) { throw new COMException("Could not query known folder manager interface"); } IKnownFolder knownFolder; knownFolderManager.GetFolder(ref knownFolderId, out knownFolder); if (knownFolder == null) { throw new COMException("Could not query known folder"); } string path; knownFolder.GetPath(0, out path); return(path); }
public void KnownFolder_GetRedirectionCaps() { IKnownFolderManager manager = ShellMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KnownFolderIds.Libraries); folder.GetRedirectionCapabilities().Should().Be(KnownFolderRedirectionCapabilities.Redirectable); }
public void ShellItem_GetDisplayName() { IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.Windows); IShellItem item = folder.GetShellItem(0, new Guid(InterfaceIds.IID_IShellItem)); item.GetDisplayName(SIGDN.NORMALDISPLAY).Should().Be("Windows"); }
public void ShellItem_GetDisplayName() { IKnownFolderManager manager = ShellMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KnownFolderIds.Windows); IShellItem item = folder.GetShellItem(0, new Guid(InterfaceIds.IID_IShellItem)); item.GetDisplayName(ShellItemDisplayNames.NormalDisplay).Should().Be("Windows"); }
public void KnownFolder_GetFolderType() { // Most known folders don't have a FolderType associated and will throw a COMException with E_FAIL. IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.Contacts); folder.GetFolderType().Should().Be(FOLDERTYPEID.Contacts); }
/// <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 null if Known Folder is not found or could not be created.</returns> internal static IKnownFolder FromKnownFolderIdInternal(Guid knownFolderId) { IKnownFolderNative knownFolderNative; IKnownFolderManager knownFolderManager = (IKnownFolderManager) new KnownFolderManagerClass(); HResult hr = knownFolderManager.GetFolder(knownFolderId, out knownFolderNative); return((hr == HResult.Ok) ? GetKnownFolder(knownFolderNative) : null); }
public void KnownFolderManager_RoundTripId() { IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); int csidl = manager.FolderIdToCsidl(KNOWNFOLDERID.Windows); csidl.Should().Be(36); Guid id = manager.FolderIdFromCsidl(csidl); id.Should().Be(KNOWNFOLDERID.Windows); }
/// <summary>Gets the KNOWNFOLDERID enum from a path.</summary> /// <param name="path">The folder path.</param> /// <returns>The KNOWNFOLDERID enum.</returns> public static KNOWNFOLDERID GetKnownFolderFromPath(string path) { if (Environment.OSVersion.Version.Major < 6) { return(Enum.GetValues(typeof(KNOWNFOLDERID)).Cast <KNOWNFOLDERID>().Single(k => string.Equals(k.FullPath(), path, StringComparison.InvariantCultureIgnoreCase))); } var ikfm = new IKnownFolderManager(); return(GetKnownFolderFromGuid(ikfm.FindFolderFromPath(path, FFFP_MODE.FFFP_EXACTMATCH).GetId())); }
public void KnownFolder_GetIdList() { IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.Windows); using (var id = folder.GetIDList(0)) { id.IsInvalid.Should().BeFalse(); ShellDesktopMethods.GetNameFromId(id, SIGDN.PARENTRELATIVE).Should().Be("Windows"); } }
public void KnownFolder_GetIdList() { IKnownFolderManager manager = ShellMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KnownFolderIds.Windows); using (var id = folder.GetIDList(0)) { id.IsInvalid.Should().BeFalse(); ShellMethods.GetNameFromId(id, ShellItemDisplayNames.ParentRelative).Should().Be("Windows"); } }
public void KnownFolder_GetIShellItem() { IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.Windows); IShellItem item = folder.GetShellItem(0, new Guid(InterfaceIds.IID_IShellItem)); item.Should().NotBeNull(); IShellItem2 item2 = (IShellItem2)folder.GetShellItem(0, new Guid(InterfaceIds.IID_IShellItem2)); item2.Should().NotBeNull(); }
public void KnownFolder_GetPath() { using (var id = ShellDesktopMethods.GetKnownFolderId(KNOWNFOLDERID.Windows)) { id.IsInvalid.Should().BeFalse(); ShellDesktopMethods.GetNameFromId(id, SIGDN.PARENTRELATIVE).Should().Be("Windows"); IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.Windows); folder.GetPath(0).Should().Be(ShellDesktopMethods.GetNameFromId(id, SIGDN.FILESYSPATH)); } }
public void KnownFolder_GetPath() { using (var id = ShellMethods.GetKnownFolderId(KnownFolderIds.Windows)) { id.IsInvalid.Should().BeFalse(); ShellMethods.GetNameFromId(id, ShellItemDisplayNames.ParentRelative).Should().BeEquivalentTo("Windows"); IKnownFolderManager manager = ShellMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KnownFolderIds.Windows); folder.GetPath(0).Should().BeEquivalentTo(ShellMethods.GetNameFromId(id, ShellItemDisplayNames.FilesysPath)); } }
public void GetKnownFolderIds_Basic() { var ids = ShellDesktopMethods.GetKnownFolderIds(); ids.Should().NotBeEmpty(); IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); // Check a few foreach (var id in ids.Take(5)) { manager.GetFolder(id).Should().NotBeNull(); } }
/// <summary> /// Returns the known folder given its canonical name. /// </summary> /// <param name="canonicalName">A non-localized canonical name for the known folder, such as MyComputer.</param> /// <returns>A known folder representing the specified name.</returns> /// <exception cref="System.ArgumentException">Thrown if the given canonical name is invalid or if the KnownFolder could not be created.</exception> public static IKnownFolder FromCanonicalName(string canonicalName) { IKnownFolderNative knownFolderNative; IKnownFolderManager knownFolderManager = (IKnownFolderManager) new KnownFolderManagerClass(); knownFolderManager.GetFolderByName(canonicalName, out knownFolderNative); IKnownFolder kf = KnownFolderHelper.GetKnownFolder(knownFolderNative); if (kf == null) { throw new ArgumentException(LocalizedMessages.ShellInvalidCanonicalName, "canonicalName"); } return(kf); }
public void KnownFolder_GetDefinition() { IKnownFolderManager manager = ShellMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KnownFolderIds.LocalAppData); using (KnownFolderDefinition definition = new KnownFolderDefinition()) { folder.GetFolderDefinition(definition); definition.FolderTypeId.Should().Be(Guid.Empty); definition.Category.Should().Be(KnownFolderCategory.PerUser); definition.Name.Should().Be("Local AppData"); definition.RelativePath.Should().Be(@"AppData\Local"); definition.Parent.Should().Be(KnownFolderIds.Profile); } }
/// <summary> /// Returns the native known folder (IKnownFolderNative) given a PID list /// </summary> /// <param name="pidl"></param> /// <returns></returns> internal static IKnownFolderNative FromPIDL(IntPtr pidl) { IKnownFolderManager knownFolderManager = (IKnownFolderManager) new KnownFolderManagerClass(); IKnownFolderNative knownFolder; HRESULT hr = knownFolderManager.FindFolderFromIDList(pidl, out knownFolder); if (hr != HRESULT.S_OK) { return(null); } else { return(knownFolder); } }
public void KnownFolder_GetDefinition() { IKnownFolderManager manager = ShellDesktopMethods.GetKnownFolderManager(); IKnownFolder folder = manager.GetFolder(KNOWNFOLDERID.LocalAppData); using (KNOWNFOLDER_DEFINITION definition = new KNOWNFOLDER_DEFINITION()) { folder.GetFolderDefinition(definition); definition.FolderTypeId.Should().Be(Guid.Empty); definition.Category.Should().Be(KF_CATEGORY.PERUSER); definition.Name.Should().Be("Local AppData"); definition.RelativePath.Should().Be(@"AppData\Local"); definition.Parent.Should().Be(KNOWNFOLDERID.Profile); } }
/// <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 null if Known Folder is not found or could not be created.</returns> internal static IKnownFolder FromKnownFolderIdInternal(Guid knownFolderId) { IKnownFolderNative knownFolderNative; IKnownFolderManager knownFolderManager = (IKnownFolderManager) new KnownFolderManagerClass(); HRESULT hr = knownFolderManager.GetFolder(knownFolderId, out knownFolderNative); if (hr == HRESULT.S_OK) { return(GetKnownFolder(knownFolderNative)); } else { return(null); } }
/// <summary> /// Returns the known folder given its canonical name. /// </summary> /// <param name="canonicalName">A non-localized canonical name for the known folder, such as MyComputer.</param> /// <returns>A known folder representing the specified name.</returns> /// <exception cref="System.ArgumentException">Thrown if the given canonical name is invalid or if the KnownFolder could not be created.</exception> public static IKnownFolder FromCanonicalName(string canonicalName) { IKnownFolderNative knownFolderNative; IKnownFolderManager knownFolderManager = (IKnownFolderManager) new KnownFolderManagerClass(); knownFolderManager.GetFolderByName(canonicalName, out knownFolderNative); IKnownFolder kf = KnownFolderHelper.GetKnownFolder(knownFolderNative); if (kf != null) { return(kf); } else { throw new ArgumentException("Canonical name is invalid.", "canonicalName"); } }
public void SetFolderPath(ExtraSpecialFolder folder, string path) { Guid rfid; IKnownFolderManager knownFolderManager = (IKnownFolderManager) new KnownFolderManager(); knownFolderManager.FolderIdFromCsidl((int)folder, out rfid); if (path == null) { IKnownFolder knownFolderInterface; knownFolderManager.GetFolder(ref rfid, out knownFolderInterface); knownFolderInterface.GetPath(KnownFolderPathFlags.KF_FLAG_DEFAULT_PATH, out path); } //knownFolderInterface.SetPath(KnownFolderPathFlags.KF_FLAG_DONT_UNEXPAND, path); string ppszError; knownFolderManager.Redirect(ref rfid, IntPtr.Zero, 0, path, 0, ref rfid, out ppszError); }
/// <summary> /// Get the Guid identifiers for all known folders. /// </summary> public static unsafe IEnumerable <Guid> GetKnownFolderIds() { List <Guid> ids = new List <Guid>(); IKnownFolderManager manager = GetKnownFolderManager(); uint count = manager.GetFolderIds(out SafeComHandle buffer); using (buffer) { Guid *g = (Guid *)buffer.DangerousGetHandle(); for (int i = 0; i < count; i++) { ids.Add(*g++); } } return(ids); }
private static ReadOnlyCollection <IKnownFolder> GetAllFolders() { // Should this method be thread-safe?? (It'll take a while // to get a list of all the known folders, create the managed wrapper // and return the read-only collection. IList <IKnownFolder> foldersList = new List <IKnownFolder>(); uint count; IntPtr folders; IKnownFolderManager knownFolderManager = (IKnownFolderManager) new KnownFolderManagerClass(); knownFolderManager.GetFolderIds(out folders, out count); if (count > 0 && folders != IntPtr.Zero) { // Loop through all the KnownFolderID elements for (int i = 0; i < count; i++) { // Read the current pointer IntPtr current = new IntPtr(folders.ToInt64() + (Marshal.SizeOf(typeof(Guid)) * i)); // Convert to Guid Guid knownFolderID = (Guid)Marshal.PtrToStructure(current, typeof(Guid)); IKnownFolder kf = null; // Get the known folder kf = KnownFolderHelper.FromKnownFolderIdInternal(knownFolderID); // Add to our collection if it's not null (some folders might not exist on the system // or we could have an exception that resulted in the null return from above method call if (kf != null) { foldersList.Add(kf); } } } Marshal.FreeCoTaskMem(folders); return(new ReadOnlyCollection <IKnownFolder>(foldersList)); }
protected override void BeginProcessing() { this.knownFolderManager = (IKnownFolderManager)new KnownFolderManager(); }