#region
|
|
using System.Runtime.InteropServices;
|
using System.Text;
|
|
#endregion
|
|
namespace CSFrameworkV5.Common
|
{
|
/**/
|
/// <summary>
|
/// Converts file and directory paths to their respective
|
/// long and short name versions.
|
/// </summary>
|
/// <remarks>This class uses InteropServices to call GetLongPathName and GetShortPathName</remarks>
|
public class ShellPathNameConvert
|
{
|
[DllImport("kernel32.dll")]
|
private static extern uint GetLongPathName(string shortname,
|
StringBuilder
|
longnamebuff, uint buffersize);
|
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
|
public static extern int GetShortPathName(
|
[MarshalAs(UnmanagedType.LPTStr)] string path,
|
[MarshalAs(UnmanagedType.LPTStr)] StringBuilder shortPath,
|
int shortPathLength);
|
|
/**/
|
/// <summary>
|
/// The ToShortPathNameToLongPathName function retrieves the long path form of a specified short input path
|
/// </summary>
|
/// <param name="shortName">The short name path</param>
|
/// <returns>A long name path string</returns>
|
public static string ToLongPathName(string shortName)
|
{
|
var longNameBuffer = new StringBuilder(256);
|
var bufferSize = (uint)longNameBuffer.Capacity;
|
|
GetLongPathName(shortName, longNameBuffer, bufferSize);
|
|
return longNameBuffer.ToStringEx();
|
}
|
|
/**/
|
/// <summary>
|
/// The ToLongPathNameToShortPathName function retrieves the short path form of a specified long input path
|
/// </summary>
|
/// <param name="longName">The long name path</param>
|
/// <returns>A short name path string</returns>
|
public static string ToShortPathName(string longName)
|
{
|
var shortNameBuffer = new StringBuilder(256);
|
var bufferSize = shortNameBuffer.Capacity;
|
|
var result =
|
GetShortPathName(longName, shortNameBuffer, bufferSize);
|
|
return shortNameBuffer.ToStringEx();
|
}
|
}
|
}
|