/// <summary> /// <see cref="KNOWNFOLDER_DEFINITION" />からリソース情報を取得し、プロパティを初期化します。 /// </summary> /// <param name="knownFolderDefinition"></param> private void InitializeResourceProperties(KNOWNFOLDER_DEFINITION knownFolderDefinition) { if (knownFolderDefinition.pszTooltip != IntPtr.Zero) { this.ToolTipResource = new StringReference(PtrToString(knownFolderDefinition.pszTooltip)); this.ToolTip = this.ToolTipResource.LoadString(); } else { this.ToolTipResource = null; this.ToolTip = String.Empty; } if (knownFolderDefinition.pszLocalizedName != IntPtr.Zero) { this.LocalizedNameResource = new StringReference(PtrToString(knownFolderDefinition.pszLocalizedName)); this.LocalizedName = this.LocalizedNameResource.LoadString(); } else { this.LocalizedNameResource = null; this.LocalizedName = String.Empty; } if (knownFolderDefinition.pszIcon != IntPtr.Zero) { this.IconResource = new IconReference(PtrToString(knownFolderDefinition.pszIcon)); this.Icon = this.IconResource.LoadIcon(); } else { this.IconResource = null; this.Icon = null; } }
internal KnownFolderDefinition(IKnownFolder nativeKnownFolder) { if (nativeKnownFolder == null) { throw new ArgumentNullException("nativeKnownFolder"); } this.nativeDefinition = KNOWNFOLDER_DEFINITION.FromKnownFolder(nativeKnownFolder); }
internal static void FreeKnownFolderDefinitionFields(ref KNOWNFOLDER_DEFINITION pKFD) { Marshal.FreeCoTaskMem(pKFD.pszName); Marshal.FreeCoTaskMem(pKFD.pszDescription); Marshal.FreeCoTaskMem(pKFD.pszRelativePath); Marshal.FreeCoTaskMem(pKFD.pszParsingName); Marshal.FreeCoTaskMem(pKFD.pszTooltip); Marshal.FreeCoTaskMem(pKFD.pszLocalizedName); Marshal.FreeCoTaskMem(pKFD.pszIcon); Marshal.FreeCoTaskMem(pKFD.pszSecurity); }
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); } }
static KnownFolder CreateFolder(IKnownFolder iface) { KNOWNFOLDER_DEFINITION def = iface.GetFolderDefinition(); try { return(new KnownFolder(iface, Marshal.PtrToStringUni(def.pszName), Marshal.PtrToStringUni(def.pszParsingName))); } finally { Marshal.FreeCoTaskMem(def.pszName); Marshal.FreeCoTaskMem(def.pszDescription); Marshal.FreeCoTaskMem(def.pszRelativePath); Marshal.FreeCoTaskMem(def.pszParsingName); Marshal.FreeCoTaskMem(def.pszTooltip); Marshal.FreeCoTaskMem(def.pszLocalizedName); Marshal.FreeCoTaskMem(def.pszIcon); Marshal.FreeCoTaskMem(def.pszSecurity); } }
public void Can_obtain_documents_folder_definition() { var def = KNOWNFOLDER_DEFINITION.FromKnownFolder(this.documentsFolder); Assert.AreEqual("Personal", def.name); }