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
- WebControlsSection.cs
- FragmentNavigationEventArgs.cs
- TaskFormBase.cs
- CommonRemoteMemoryBlock.cs
- DataGridColumnCollection.cs
- AncillaryOps.cs
- XamlPathDataSerializer.cs
- StringUtil.cs
- DispatcherTimer.cs
- ColorAnimation.cs
- IIS7UserPrincipal.cs
- WebFormsRootDesigner.cs
- baseaxisquery.cs
- HandlerBase.cs
- mediaclock.cs
- CngAlgorithm.cs
- LocalFileSettingsProvider.cs
- WebPartUserCapability.cs
- TreeViewHitTestInfo.cs
- CallbackDebugBehavior.cs
- XPathException.cs
- FormatSettings.cs
- CollectionCodeDomSerializer.cs
- ExpressionEditor.cs
- XmlDsigSep2000.cs
- PerformanceCounterManager.cs
- SID.cs
- WebDescriptionAttribute.cs
- URL.cs
- InvalidOleVariantTypeException.cs
- MobileComponentEditorPage.cs
- OracleBFile.cs
- GraphicsState.cs
- _LocalDataStoreMgr.cs
- SecurityKeyUsage.cs
- RijndaelManagedTransform.cs
- DesignSurface.cs
- SymLanguageType.cs
- PropertyTabAttribute.cs
- RepeatInfo.cs
- FragmentQueryKB.cs
- FunctionDescription.cs
- NameValueFileSectionHandler.cs
- AsyncOperation.cs
- X509Utils.cs
- BaseAsyncResult.cs
- ConfigurationLocation.cs
- HashCryptoHandle.cs
- OracleColumn.cs
- DefaultHttpHandler.cs
- SoapEnumAttribute.cs
- Rule.cs
- Fault.cs
- HelpKeywordAttribute.cs
- DayRenderEvent.cs
- GACIdentityPermission.cs
- DataColumnMapping.cs
- HttpHostedTransportConfiguration.cs
- DataGridColumnCollection.cs
- ProtocolElement.cs
- SizeFConverter.cs
- PrinterUnitConvert.cs
- DiscoveryVersionConverter.cs
- ContentElementAutomationPeer.cs
- ExplicitDiscriminatorMap.cs
- EpmSourceTree.cs
- _NTAuthentication.cs
- ManifestResourceInfo.cs
- CollectionViewProxy.cs
- SqlTrackingService.cs
- Tokenizer.cs
- Vector3DCollection.cs
- SmiTypedGetterSetter.cs
- FixedDSBuilder.cs
- TextElementEnumerator.cs
- PopupEventArgs.cs
- RootBrowserWindowAutomationPeer.cs
- PersonalizablePropertyEntry.cs
- Latin1Encoding.cs
- PagerSettings.cs
- MergeLocalizationDirectives.cs
- Marshal.cs
- VirtualDirectoryMapping.cs
- DBSchemaRow.cs
- TextureBrush.cs
- FocusWithinProperty.cs
- PathNode.cs
- LoginName.cs
- CaseInsensitiveComparer.cs
- DependencyObjectProvider.cs
- Permission.cs
- LocatorPart.cs
- ArglessEventHandlerProxy.cs
- ObjectViewListener.cs
- ObjectStateManager.cs
- FormsAuthenticationEventArgs.cs
- DocumentViewerBase.cs
- GridProviderWrapper.cs
- TextBoxBase.cs
- CssStyleCollection.cs