/// <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);
 }
示例#4
0
        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);
            }
        }
示例#5
0
        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);
            }
        }
示例#6
0
        public void Can_obtain_documents_folder_definition()
        {
            var def = KNOWNFOLDER_DEFINITION.FromKnownFolder(this.documentsFolder);

            Assert.AreEqual("Personal", def.name);
        }