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
- TdsParser.cs
- ShutDownListener.cs
- MgmtConfigurationRecord.cs
- TableCellAutomationPeer.cs
- MetricEntry.cs
- ToolBar.cs
- Propagator.JoinPropagator.cs
- ProjectedWrapper.cs
- EventWaitHandleSecurity.cs
- NamedPermissionSet.cs
- Converter.cs
- ClientScriptItemCollection.cs
- XamlReader.cs
- ExpiredSecurityTokenException.cs
- GridEntry.cs
- validationstate.cs
- ServiceDescription.cs
- IPipelineRuntime.cs
- EntityDataSourceMemberPath.cs
- TextFormatterHost.cs
- DesignerDataConnection.cs
- HWStack.cs
- SqlXmlStorage.cs
- FileLogRecord.cs
- ReadOnlyCollection.cs
- PluralizationService.cs
- FreeFormPanel.cs
- ByteAnimationBase.cs
- FixedTextBuilder.cs
- ConvertersCollection.cs
- PerfCounters.cs
- MatrixValueSerializer.cs
- GeneralTransform3DCollection.cs
- ProxyAttribute.cs
- EDesignUtil.cs
- ParameterModifier.cs
- GenericRootAutomationPeer.cs
- ReferenceTypeElement.cs
- MediaElementAutomationPeer.cs
- Attributes.cs
- IsolatedStorageException.cs
- ImageAttributes.cs
- WindowsMenu.cs
- GeometryModel3D.cs
- Label.cs
- TableLayoutPanel.cs
- CollectionsUtil.cs
- TriggerBase.cs
- NegatedCellConstant.cs
- XmlFormatReaderGenerator.cs
- PersistenceParticipant.cs
- Vector.cs
- IteratorFilter.cs
- WebPartCatalogAddVerb.cs
- IndexedDataBuffer.cs
- DataServiceKeyAttribute.cs
- ExceptionValidationRule.cs
- ModelProperty.cs
- CodeIdentifiers.cs
- CalendarButtonAutomationPeer.cs
- FactoryRecord.cs
- ControlBuilder.cs
- X509ChainElement.cs
- ConnectionManagementElement.cs
- HttpCapabilitiesSectionHandler.cs
- XmlQuerySequence.cs
- ButtonBaseAdapter.cs
- PropertiesTab.cs
- DummyDataSource.cs
- HideDisabledControlAdapter.cs
- MaskedTextProvider.cs
- OperationContextScope.cs
- LabelDesigner.cs
- Symbol.cs
- XPathQilFactory.cs
- StylusButtonEventArgs.cs
- XmlSchemaValidator.cs
- UrlAuthorizationModule.cs
- CompatibleIComparer.cs
- InputLanguageCollection.cs
- Dispatcher.cs
- ConfigXmlCDataSection.cs
- QueryOpcode.cs
- TraceContextEventArgs.cs
- ManagementClass.cs
- SafeUserTokenHandle.cs
- OleDbError.cs
- DynamicRouteExpression.cs
- ICollection.cs
- WebPartCloseVerb.cs
- RectAnimation.cs
- XmlSchemaAnnotated.cs
- ResourceAssociationType.cs
- safemediahandle.cs
- PositiveTimeSpanValidatorAttribute.cs
- ReliableInputConnection.cs
- Wizard.cs
- InheritanceService.cs
- WinEventHandler.cs
- PartialTrustVisibleAssemblyCollection.cs