Code:
/ FX-1434 / FX-1434 / 1.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
- DesignTimeTemplateParser.cs
- DetailsViewUpdateEventArgs.cs
- XmlAttribute.cs
- HwndSourceKeyboardInputSite.cs
- TdsParserSafeHandles.cs
- ResourcesBuildProvider.cs
- SchemaElementLookUpTableEnumerator.cs
- DisableDpiAwarenessAttribute.cs
- ToolStripHighContrastRenderer.cs
- Receive.cs
- XsdBuildProvider.cs
- MustUnderstandSoapException.cs
- HttpContextBase.cs
- TextMarkerSource.cs
- IIS7WorkerRequest.cs
- LiteralControl.cs
- RedirectionProxy.cs
- PropertyCollection.cs
- Application.cs
- IList.cs
- WorkflowApplicationUnloadedException.cs
- ExecutedRoutedEventArgs.cs
- RelationalExpressions.cs
- PasswordDeriveBytes.cs
- KeyPullup.cs
- SQLDateTime.cs
- SettingsPropertyCollection.cs
- DesignerActionPropertyItem.cs
- SuppressMergeCheckAttribute.cs
- MissingSatelliteAssemblyException.cs
- PeerMaintainer.cs
- UICuesEvent.cs
- Cursors.cs
- QueryOutputWriter.cs
- XmlArrayAttribute.cs
- EventLogEntry.cs
- SqlCachedBuffer.cs
- MenuBindingsEditor.cs
- HashLookup.cs
- InertiaExpansionBehavior.cs
- CodeGenerator.cs
- DesignConnectionCollection.cs
- InternalBase.cs
- XmlSchemaParticle.cs
- XmlSchemaType.cs
- LinkArea.cs
- HMACSHA256.cs
- TypeInitializationException.cs
- BitmapEffectrendercontext.cs
- WmlPageAdapter.cs
- RangeContentEnumerator.cs
- SqlProcedureAttribute.cs
- DirectoryRedirect.cs
- Root.cs
- _HTTPDateParse.cs
- Literal.cs
- VisualTreeUtils.cs
- SqlRemoveConstantOrderBy.cs
- DataSysAttribute.cs
- CfgRule.cs
- ResourceDescriptionAttribute.cs
- StaticExtension.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- XpsFilter.cs
- ResourceReferenceKeyNotFoundException.cs
- MouseButtonEventArgs.cs
- AnimationStorage.cs
- ByteAnimation.cs
- TrackBarRenderer.cs
- LineGeometry.cs
- Table.cs
- DataControlImageButton.cs
- UntrustedRecipientException.cs
- SoapTypeAttribute.cs
- OptionUsage.cs
- BindToObject.cs
- NotificationContext.cs
- InitializingNewItemEventArgs.cs
- SequentialUshortCollection.cs
- BulletedList.cs
- PeerResolverElement.cs
- DeadCharTextComposition.cs
- DistributedTransactionPermission.cs
- MutableAssemblyCacheEntry.cs
- DataSourceCacheDurationConverter.cs
- EastAsianLunisolarCalendar.cs
- RenderingBiasValidation.cs
- XmlEntityReference.cs
- QilReference.cs
- ToolboxComponentsCreatingEventArgs.cs
- CacheDependency.cs
- MetadataFile.cs
- ResourceCategoryAttribute.cs
- BridgeDataReader.cs
- WindowsSspiNegotiation.cs
- DataShape.cs
- WebScriptMetadataMessage.cs
- DataControlFieldHeaderCell.cs
- MimeAnyImporter.cs
- ServicePoint.cs