diff --git a/PInvoke/Shell32/KnownFolderIdExt.cs b/PInvoke/Shell32/KnownFolderIdExt.cs index 44b5b7c9..b19f6104 100644 --- a/PInvoke/Shell32/KnownFolderIdExt.cs +++ b/PInvoke/Shell32/KnownFolderIdExt.cs @@ -34,10 +34,10 @@ namespace Vanara.PInvoke public static T GetRegistryProperty(this KNOWNFOLDERID id, string valueName) => (T)Microsoft.Win32.Registry.GetValue(RegPath + id.Guid().ToString("B"), valueName, default(T)); - /// Retrieves the Guid associated with a . - /// The known folder. - /// The GUID associated with the or if no association exists. - public static Guid Guid(this KNOWNFOLDERID id) => AssociateAttribute.GetGuidFromEnum(id); + /// Retrieves the Guid associated with a . + /// The known folder. + /// The GUID associated with the or if no association exists. + public static Guid Guid(this KNOWNFOLDERID id) => AssociateAttribute.GetGuidFromEnum(id); /// Retrieves the IShellItem associated with a . /// The known folder. diff --git a/WIndows.Forms/Dialogs/FolderBrowserDialog.cs b/WIndows.Forms/Dialogs/FolderBrowserDialog.cs index bb6ff21c..140ecb8f 100644 --- a/WIndows.Forms/Dialogs/FolderBrowserDialog.cs +++ b/WIndows.Forms/Dialogs/FolderBrowserDialog.cs @@ -33,364 +33,364 @@ namespace Vanara.Windows.Forms /// /// Standard folders registered with the system as Known Folders. A computer will have only folders appropriate to it installed. /// - public enum KnownFolders + public enum KnownFolder { /// Account Pictures - AccountPictures, + AccountPictures = KNOWNFOLDERID.FOLDERID_AccountPictures, /// Get Programs - AddNewPrograms, + AddNewPrograms = KNOWNFOLDERID.FOLDERID_AddNewPrograms, - /// Administration Tools - AdminTools, + /// Admin tools + AdminTools = KNOWNFOLDERID.FOLDERID_AdminTools, - /// Application Shortcuts - ApplicationShortcuts, + /// Application shortcuts + ApplicationShortcuts = KNOWNFOLDERID.FOLDERID_ApplicationShortcuts, /// Applications - AppsFolder, + AppsFolder = KNOWNFOLDERID.FOLDERID_AppsFolder, /// Installed Updates - AppUpdates, + AppUpdates = KNOWNFOLDERID.FOLDERID_AppUpdates, /// Camera Roll - CameraRoll, + CameraRoll = KNOWNFOLDERID.FOLDERID_CameraRoll, /// Temporary Burn Folder - CDBurning, + CDBurning = KNOWNFOLDERID.FOLDERID_CDBurning, /// Programs and Features - ChangeRemovePrograms, + ChangeRemovePrograms = KNOWNFOLDERID.FOLDERID_ChangeRemovePrograms, /// Administrative Tools - CommonAdminTools, + CommonAdminTools = KNOWNFOLDERID.FOLDERID_CommonAdminTools, /// OEM Links - CommonOEMLinks, + CommonOEMLinks = KNOWNFOLDERID.FOLDERID_CommonOEMLinks, /// Programs - CommonPrograms, + CommonPrograms = KNOWNFOLDERID.FOLDERID_CommonPrograms, /// Start Menu - CommonStartMenu, + CommonStartMenu = KNOWNFOLDERID.FOLDERID_CommonStartMenu, /// Startup - CommonStartup, + CommonStartup = KNOWNFOLDERID.FOLDERID_CommonStartup, /// Templates - CommonTemplates, + CommonTemplates = KNOWNFOLDERID.FOLDERID_CommonTemplates, /// Computer - ComputerFolder, + ComputerFolder = KNOWNFOLDERID.FOLDERID_ComputerFolder, /// Conflicts - ConflictFolder, + ConflictFolder = KNOWNFOLDERID.FOLDERID_ConflictFolder, /// Network Connections - ConnectionsFolder, + ConnectionsFolder = KNOWNFOLDERID.FOLDERID_ConnectionsFolder, /// Contacts - Contacts, + Contacts = KNOWNFOLDERID.FOLDERID_Contacts, /// Control Panel - ControlPanelFolder, + ControlPanelFolder = KNOWNFOLDERID.FOLDERID_ControlPanelFolder, /// Cookies - Cookies, + Cookies = KNOWNFOLDERID.FOLDERID_Cookies, /// Desktop - Desktop, + Desktop = KNOWNFOLDERID.FOLDERID_Desktop, /// DeviceMetadataStore - DeviceMetadataStore, + DeviceMetadataStore = KNOWNFOLDERID.FOLDERID_DeviceMetadataStore, /// Documents - Documents, + Documents = KNOWNFOLDERID.FOLDERID_Documents, /// Documents - DocumentsLibrary, + DocumentsLibrary = KNOWNFOLDERID.FOLDERID_DocumentsLibrary, /// Downloads - Downloads, + Downloads = KNOWNFOLDERID.FOLDERID_Downloads, /// Favorites - Favorites, + Favorites = KNOWNFOLDERID.FOLDERID_Favorites, /// Fonts - Fonts, + Fonts = KNOWNFOLDERID.FOLDERID_Fonts, /// Games - Games, + Games = KNOWNFOLDERID.FOLDERID_Games, /// GameExplorer - GameTasks, + GameTasks = KNOWNFOLDERID.FOLDERID_GameTasks, /// History - History, + History = KNOWNFOLDERID.FOLDERID_History, /// Homegroup - HomeGroup, + HomeGroup = KNOWNFOLDERID.FOLDERID_HomeGroup, /// The user's username (%USERNAME%) - HomeGroupCurrentUser, + HomeGroupCurrentUser = KNOWNFOLDERID.FOLDERID_HomeGroupCurrentUser, /// ImplicitAppShortcuts - ImplicitAppShortcuts, + ImplicitAppShortcuts = KNOWNFOLDERID.FOLDERID_ImplicitAppShortcuts, /// Temporary Internet Files - InternetCache, + InternetCache = KNOWNFOLDERID.FOLDERID_InternetCache, /// The Internet - InternetFolder, + InternetFolder = KNOWNFOLDERID.FOLDERID_InternetFolder, /// Libraries - Libraries, + Libraries = KNOWNFOLDERID.FOLDERID_Libraries, /// Links - Links, + Links = KNOWNFOLDERID.FOLDERID_Links, /// Local - LocalAppData, + LocalAppData = KNOWNFOLDERID.FOLDERID_LocalAppData, /// LocalLow - LocalAppDataLow, + LocalAppDataLow = KNOWNFOLDERID.FOLDERID_LocalAppDataLow, /// None - LocalizedResourcesDir, + LocalizedResourcesDir = KNOWNFOLDERID.FOLDERID_LocalizedResourcesDir, /// Music - Music, + Music = KNOWNFOLDERID.FOLDERID_Music, /// Music - MusicLibrary, + MusicLibrary = KNOWNFOLDERID.FOLDERID_MusicLibrary, /// Network Shortcuts - NetHood, + NetHood = KNOWNFOLDERID.FOLDERID_NetHood, /// Network - NetworkFolder, + NetworkFolder = KNOWNFOLDERID.FOLDERID_NetworkFolder, /// Original Images - OriginalImages, + OriginalImages = KNOWNFOLDERID.FOLDERID_OriginalImages, /// Slide Shows - PhotoAlbums, + PhotoAlbums = KNOWNFOLDERID.FOLDERID_PhotoAlbums, /// Pictures - PicturesLibrary, + PicturesLibrary = KNOWNFOLDERID.FOLDERID_PicturesLibrary, /// Pictures - Pictures, + Pictures = KNOWNFOLDERID.FOLDERID_Pictures, /// Playlists - Playlists, + Playlists = KNOWNFOLDERID.FOLDERID_Playlists, /// Printers - PrintersFolder, + PrintersFolder = KNOWNFOLDERID.FOLDERID_PrintersFolder, /// Printer Shortcuts - PrintHood, + PrintHood = KNOWNFOLDERID.FOLDERID_PrintHood, /// The user's username (%USERNAME%) - Profile, + Profile = KNOWNFOLDERID.FOLDERID_Profile, /// ProgramData - ProgramData, + ProgramData = KNOWNFOLDERID.FOLDERID_ProgramData, /// Program Files - ProgramFiles, + ProgramFiles = KNOWNFOLDERID.FOLDERID_ProgramFiles, /// Program Files - ProgramFilesX64, + ProgramFilesX64 = KNOWNFOLDERID.FOLDERID_ProgramFilesX64, /// Program Files - ProgramFilesX86, + ProgramFilesX86 = KNOWNFOLDERID.FOLDERID_ProgramFilesX86, /// Common Files - ProgramFilesCommon, + ProgramFilesCommon = KNOWNFOLDERID.FOLDERID_ProgramFilesCommon, /// Common Files - ProgramFilesCommonX64, + ProgramFilesCommonX64 = KNOWNFOLDERID.FOLDERID_ProgramFilesCommonX64, /// Common Files - ProgramFilesCommonX86, + ProgramFilesCommonX86 = KNOWNFOLDERID.FOLDERID_ProgramFilesCommonX86, /// Programs - Programs, + Programs = KNOWNFOLDERID.FOLDERID_Programs, /// Public - Public, + Public = KNOWNFOLDERID.FOLDERID_Public, /// Public Desktop - PublicDesktop, + PublicDesktop = KNOWNFOLDERID.FOLDERID_PublicDesktop, /// Public Documents - PublicDocuments, + PublicDocuments = KNOWNFOLDERID.FOLDERID_PublicDocuments, /// Public Downloads - PublicDownloads, + PublicDownloads = KNOWNFOLDERID.FOLDERID_PublicDownloads, /// GameExplorer - PublicGameTasks, + PublicGameTasks = KNOWNFOLDERID.FOLDERID_PublicGameTasks, /// Libraries - PublicLibraries, + PublicLibraries = KNOWNFOLDERID.FOLDERID_PublicLibraries, /// Public Music - PublicMusic, + PublicMusic = KNOWNFOLDERID.FOLDERID_PublicMusic, /// Public Pictures - PublicPictures, + PublicPictures = KNOWNFOLDERID.FOLDERID_PublicPictures, /// Ringtones - PublicRingtones, + PublicRingtones = KNOWNFOLDERID.FOLDERID_PublicRingtones, /// Public Account Pictures - PublicUserTiles, + PublicUserTiles = KNOWNFOLDERID.FOLDERID_PublicUserTiles, /// Public Videos - PublicVideos, + PublicVideos = KNOWNFOLDERID.FOLDERID_PublicVideos, /// Quick Launch - QuickLaunch, + QuickLaunch = KNOWNFOLDERID.FOLDERID_QuickLaunch, /// Recent Items - Recent, + Recent = KNOWNFOLDERID.FOLDERID_Recent, /// Recorded TV - RecordedTVLibrary, + RecordedTVLibrary = KNOWNFOLDERID.FOLDERID_RecordedTVLibrary, /// Recycle Bin - RecycleBinFolder, + RecycleBinFolder = KNOWNFOLDERID.FOLDERID_RecycleBinFolder, /// Resources - ResourceDir, + ResourceDir = KNOWNFOLDERID.FOLDERID_ResourceDir, /// Ringtones - Ringtones, + Ringtones = KNOWNFOLDERID.FOLDERID_Ringtones, /// Roaming - RoamingAppData, + RoamingAppData = KNOWNFOLDERID.FOLDERID_RoamingAppData, /// RoamedTileImages - RoamedTileImages, + RoamedTileImages = KNOWNFOLDERID.FOLDERID_RoamedTileImages, /// RoamingTiles - RoamingTiles, + RoamingTiles = KNOWNFOLDERID.FOLDERID_RoamingTiles, /// Sample Music - SampleMusic, + SampleMusic = KNOWNFOLDERID.FOLDERID_SampleMusic, /// Sample Pictures - SamplePictures, + SamplePictures = KNOWNFOLDERID.FOLDERID_SamplePictures, /// Sample Playlists - SamplePlaylists, + SamplePlaylists = KNOWNFOLDERID.FOLDERID_SamplePlaylists, /// Sample Videos - SampleVideos, + SampleVideos = KNOWNFOLDERID.FOLDERID_SampleVideos, /// Saved Games - SavedGames, + SavedGames = KNOWNFOLDERID.FOLDERID_SavedGames, /// Saved Pictures - SavedPictures, + SavedPictures = KNOWNFOLDERID.FOLDERID_SavedPictures, /// Saved Pictures Library - SavedPicturesLibrary, + SavedPicturesLibrary = KNOWNFOLDERID.FOLDERID_SavedPicturesLibrary, /// Searches - SavedSearches, + SavedSearches = KNOWNFOLDERID.FOLDERID_SavedSearches, /// Screenshots - Screenshots, + Screenshots = KNOWNFOLDERID.FOLDERID_Screenshots, /// Offline Files - OfflineFiles, + SEARCH_CSC = KNOWNFOLDERID.FOLDERID_SEARCH_CSC, /// History - SearchHistory, + SearchHistory = KNOWNFOLDERID.FOLDERID_SearchHistory, /// Search Results - SearchHome, + SearchHome = KNOWNFOLDERID.FOLDERID_SearchHome, /// Microsoft Office Outlook - MicrosoftOfficeOutlook, + SEARCH_MAPI = KNOWNFOLDERID.FOLDERID_SEARCH_MAPI, /// Templates - SearchTemplates, + SearchTemplates = KNOWNFOLDERID.FOLDERID_SearchTemplates, /// SendTo - SendTo, + SendTo = KNOWNFOLDERID.FOLDERID_SendTo, /// Gadgets - SidebarDefaultParts, + SidebarDefaultParts = KNOWNFOLDERID.FOLDERID_SidebarDefaultParts, /// Gadgets - SidebarParts, + SidebarParts = KNOWNFOLDERID.FOLDERID_SidebarParts, /// OneDrive - SkyDrive, + SkyDrive = KNOWNFOLDERID.FOLDERID_SkyDrive, /// Camera Roll - SkyDriveCameraRoll, + SkyDriveCameraRoll = KNOWNFOLDERID.FOLDERID_SkyDriveCameraRoll, /// Documents - SkyDriveDocuments, + SkyDriveDocuments = KNOWNFOLDERID.FOLDERID_SkyDriveDocuments, /// Pictures - SkyDrivePictures, + SkyDrivePictures = KNOWNFOLDERID.FOLDERID_SkyDrivePictures, /// Start Menu - StartMenu, + StartMenu = KNOWNFOLDERID.FOLDERID_StartMenu, /// Startup - Startup, + Startup = KNOWNFOLDERID.FOLDERID_Startup, /// Sync Center - SyncManagerFolder, + SyncManagerFolder = KNOWNFOLDERID.FOLDERID_SyncManagerFolder, /// Sync Results - SyncResultsFolder, + SyncResultsFolder = KNOWNFOLDERID.FOLDERID_SyncResultsFolder, /// Sync Setup - SyncSetupFolder, + SyncSetupFolder = KNOWNFOLDERID.FOLDERID_SyncSetupFolder, /// System32 - System, + System = KNOWNFOLDERID.FOLDERID_System, /// System32 - SystemX86, + SystemX86 = KNOWNFOLDERID.FOLDERID_SystemX86, /// Templates - Templates, + Templates = KNOWNFOLDERID.FOLDERID_Templates, /// User Pinned - UserPinned, + UserPinned = KNOWNFOLDERID.FOLDERID_UserPinned, /// Users - UserProfiles, + UserProfiles = KNOWNFOLDERID.FOLDERID_UserProfiles, /// Programs - UserProgramFiles, + UserProgramFiles = KNOWNFOLDERID.FOLDERID_UserProgramFiles, /// Programs - UserProgramFilesCommon, + UserProgramFilesCommon = KNOWNFOLDERID.FOLDERID_UserProgramFilesCommon, /// The user's full name (for instance, Jean Philippe Bagel) entered when the user account was created. - UsersFiles, + UsersFiles = KNOWNFOLDERID.FOLDERID_UsersFiles, /// Libraries - UsersLibraries, + UsersLibraries = KNOWNFOLDERID.FOLDERID_UsersLibraries, /// Videos - Videos, + Videos = KNOWNFOLDERID.FOLDERID_Videos, /// Videos - VideosLibrary, + VideosLibrary = KNOWNFOLDERID.FOLDERID_VideosLibrary, /// Windows - Windows, + Windows = KNOWNFOLDERID.FOLDERID_Windows, /// Undefined Undefined = 0xFFFF, @@ -400,16 +400,16 @@ namespace Vanara.Windows.Forms [ToolboxBitmap(typeof(FolderBrowserDialog), "Dialog"), Description("Dialog that browses network computers.")] public class FolderBrowserDialog : CommonDialog { - private const KnownFolders defaultComputersFolder = KnownFolders.NetworkFolder; - private const KnownFolders defaultFolderFolder = KnownFolders.ComputerFolder; - private const KnownFolders defaultPrintersFolder = KnownFolders.PrintersFolder; + private const KnownFolder defaultComputersFolder = KnownFolder.NetworkFolder; + private const KnownFolder defaultFolderFolder = KnownFolder.ComputerFolder; + private const KnownFolder defaultPrintersFolder = KnownFolder.PrintersFolder; private static IImageList sysImgList; private FolderBrowserDialogOptions browseOption; private HandleRef href; private bool initialized; private PIDL pidl; - private KnownFolders rootFolder; + private KnownFolder rootFolder; private PIDL rootPidl; /// Initializes a new instance of the class. @@ -484,7 +484,7 @@ namespace Vanara.Windows.Forms /// Gets or sets the root folder. [Localizable(false), Category("Data"), Description("Root folder of tree."), DefaultValue(defaultFolderFolder)] - public KnownFolders RootFolder + public KnownFolder RootFolder { get => rootFolder; set { @@ -507,13 +507,13 @@ namespace Vanara.Windows.Forms get => rootPidl; set { rootPidl = value; - rootFolder = KnownFolders.Undefined; + rootFolder = KnownFolder.Undefined; } } - /// Gets or sets the item selected by the user. The initially selected item if set before the dialog box is shown. - [DefaultValue(""), Category("Data"), Localizable(true), Description("Item selected in the dialog box.")] - public string SelectedItem { get; set; } = ""; + /// Gets the path or name of the folder selected by the user. + [DefaultValue(""), Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public string SelectedItem { get; private set; } = ""; /// Gets the image from the system image list associated with the selected item. /// The selected item's image. @@ -604,6 +604,7 @@ namespace Vanara.Windows.Forms private static string GetNameForPidl(PIDL pidl) { SafeCoTaskMemHandle mStr; + try { SHGetNameFromIDList(pidl, SIGDN.SIGDN_FILESYSPATH, out mStr); return mStr.ToString(-1); } catch { } try { SHGetNameFromIDList(pidl, SIGDN.SIGDN_DESKTOPABSOLUTEEDITING, out mStr); return mStr.ToString(-1); } catch { } try { SHGetNameFromIDList(pidl, SIGDN.SIGDN_NORMALDISPLAY, out mStr); return mStr.ToString(-1); } catch { } return string.Empty; @@ -729,11 +730,11 @@ namespace Vanara.Windows.Forms { case FolderBrowserDialogOptions.Folders: case FolderBrowserDialogOptions.FoldersAndFiles: - return RootFolder != KnownFolders.ComputerFolder; + return RootFolder != KnownFolder.ComputerFolder; case FolderBrowserDialogOptions.Computers: - return RootFolder != KnownFolders.NetworkFolder; + return RootFolder != KnownFolder.NetworkFolder; case FolderBrowserDialogOptions.Printers: - return RootFolder != KnownFolders.PrintersFolder; + return RootFolder != KnownFolder.PrintersFolder; default: throw new ArgumentOutOfRangeException(); }