Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / FileDialogCustomPlace.cs / 1 / FileDialogCustomPlace.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.IO; using System.Security; using System.Security.Permissions; using System.Text; namespace System.Windows.Forms { //Sample Guids // internal const string ComputerFolder = "0AC0837C-BBF8-452A-850D-79D08E667CA7"; // internal const string Favorites = "1777F761-68AD-4D8A-87BD-30B759FA33DD"; // internal const string Documents = "FDD39AD0-238F-46AF-ADB4-6C85480369C7"; // internal const string Profile = "5E6C858F-0E22-4760-9AFE-EA3317B67173"; public class FileDialogCustomPlace { private string _path = ""; private Guid _knownFolderGuid = Guid.Empty; public FileDialogCustomPlace(string path) { this.Path = path; } public FileDialogCustomPlace(Guid knownFolderGuid) { this.KnownFolderGuid = knownFolderGuid; } public string Path { get { if (string.IsNullOrEmpty(this._path)) { return String.Empty; } return this._path; } set { this._path = value ?? ""; this._knownFolderGuid = Guid.Empty; } } public Guid KnownFolderGuid { get { return this._knownFolderGuid; } set { this._path = String.Empty; this._knownFolderGuid = value; } } public override string ToString() { return string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0} Path: {1} KnownFolderGuid: {2}", base.ToString(), this.Path, this.KnownFolderGuid); } internal FileDialogNative.IShellItem GetNativePath() { //This can throw in a multitude of ways if the path or Guid doesn't correspond //to an actual filesystem directory. Caller is responsible for handling these situations. string filePathString = ""; if (!string.IsNullOrEmpty(this._path)) { filePathString = this._path; } else { filePathString = GetFolderLocation(this._knownFolderGuid); } if (string.IsNullOrEmpty(filePathString)) { return null; } else { return FileDialog.GetShellItemForPath(filePathString); } } private static string GetFolderLocation(Guid folderGuid) { //returns a null string if the path can't be found //SECURITY: This exposes the filesystem path of the GUID. The returned value // must not be made available to user code. if (!UnsafeNativeMethods.IsVista) { return null; } StringBuilder path = new StringBuilder(NativeMethods.MAX_PATH); int result = UnsafeNativeMethods.Shell32.SHGetFolderPathEx(ref folderGuid, 0, IntPtr.Zero, path, (uint)path.Capacity); if (NativeMethods.S_OK == result) { string ret = path.ToString(); return ret; } else { // 0x80070002 is an explicit FileNotFound error. return null; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TypeReference.cs
- JsonReader.cs
- UnauthorizedAccessException.cs
- XamlTypeMapper.cs
- ObjectSpanRewriter.cs
- ValidationRule.cs
- HttpStreamMessage.cs
- UnsafeNativeMethods.cs
- SchemaImporterExtensionElement.cs
- ScrollableControlDesigner.cs
- WmlValidationSummaryAdapter.cs
- TripleDESCryptoServiceProvider.cs
- DataGridState.cs
- GridViewActionList.cs
- SystemIcmpV4Statistics.cs
- BrowserDefinitionCollection.cs
- HighlightComponent.cs
- GB18030Encoding.cs
- CommentEmitter.cs
- BitmapEffectOutputConnector.cs
- TypeBuilder.cs
- CatalogPartChrome.cs
- XslAstAnalyzer.cs
- _ListenerRequestStream.cs
- _TransmitFileOverlappedAsyncResult.cs
- DataGridViewDataErrorEventArgs.cs
- DataControlFieldCell.cs
- XPathChildIterator.cs
- AccessText.cs
- _HTTPDateParse.cs
- PackageRelationshipCollection.cs
- _TimerThread.cs
- _ShellExpression.cs
- LinearKeyFrames.cs
- SqlStatistics.cs
- externdll.cs
- BuildProvidersCompiler.cs
- CryptoProvider.cs
- MemberRestriction.cs
- RewritingPass.cs
- DocumentGridPage.cs
- HandlerFactoryWrapper.cs
- BoundsDrawingContextWalker.cs
- X509UI.cs
- DbConnectionFactory.cs
- XmlDataSourceView.cs
- GacUtil.cs
- VisualStyleElement.cs
- AutoGeneratedField.cs
- BmpBitmapDecoder.cs
- CngProvider.cs
- EnvelopedPkcs7.cs
- XmlSerializationReader.cs
- FormatSelectingMessageInspector.cs
- DiscoveryVersionConverter.cs
- Int32EqualityComparer.cs
- Baml2006SchemaContext.cs
- DoubleAnimationUsingPath.cs
- DataColumnMappingCollection.cs
- HideDisabledControlAdapter.cs
- IdentitySection.cs
- BaseParser.cs
- IfAction.cs
- DataGridViewMethods.cs
- NamespaceCollection.cs
- Overlapped.cs
- DoubleAnimationClockResource.cs
- Int32CAMarshaler.cs
- DataObjectAttribute.cs
- DupHandleConnectionReader.cs
- SupportingTokenChannel.cs
- ObfuscateAssemblyAttribute.cs
- PageParserFilter.cs
- SecurityUtils.cs
- CollectionViewGroupRoot.cs
- thaishape.cs
- PersonalizationDictionary.cs
- TextEditorSelection.cs
- AssemblyResourceLoader.cs
- CounterCreationData.cs
- EntityDataSourceContainerNameItem.cs
- ToolStripHighContrastRenderer.cs
- DbConnectionPoolIdentity.cs
- ToolStripRendererSwitcher.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- EdmSchemaAttribute.cs
- StoreItemCollection.cs
- HebrewCalendar.cs
- EntityDescriptor.cs
- NavigatorOutput.cs
- PackagingUtilities.cs
- BitmapEffect.cs
- XmlSchemaAnnotated.cs
- AuthenticationService.cs
- NotifyIcon.cs
- TextPointer.cs
- ToolStripContentPanel.cs
- SafeRegistryKey.cs
- unsafenativemethodsother.cs
- GreaterThan.cs