(File.CompactPath): new static method.

This commit is contained in:
morkt 2017-04-05 18:38:23 +04:00
parent e98a6a2fca
commit 7024987d23

View File

@ -31,10 +31,7 @@ using System.Runtime.InteropServices;
namespace GARbro.Shell
{
/// <summary>
/// Wrapper around MoveFileEx WINAPI call.
/// </summary>
class File
static class File
{
[DllImport("kernel32.dll", EntryPoint="MoveFileExW", SetLastError=true, CharSet=CharSet.Unicode)]
public static extern bool MoveFileEx (string lpExistingFileName, string lpNewFileName, MoveFileFlags dwFlags);
@ -50,6 +47,9 @@ namespace GARbro.Shell
FailIfNotTrackable = 0x00000020
}
/// <summary>
/// Wrapper around MoveFileEx WINAPI call.
/// </summary>
public static bool Rename (string szFrom, string szTo)
{
return MoveFileEx (szFrom, szTo, MoveFileFlags.ReplaceExisting);
@ -197,6 +197,21 @@ namespace GARbro.Shell
return Delete (path, FileOperationFlags.FOF_NOCONFIRMATION | FileOperationFlags.FOF_NOERRORUI | FileOperationFlags.FOF_SILENT);
}
[DllImport("shlwapi.dll", EntryPoint="PathCompactPathExW", CharSet = CharSet.Unicode)]
static extern bool PathCompactPathEx ([Out] StringBuilder pszOut, string szPath, int cchMax, int dwFlags);
const int MAX_PATH = 0x104;
/// <summary>
/// Truncates a path to fit within a certain number of characters by replacing path components with ellipses.
/// </summary>
public static string CompactPath (string name, int length)
{
var sb = new StringBuilder (MAX_PATH);
PathCompactPathEx (sb, name, Math.Min (length+1, MAX_PATH), 0);
return sb.ToString();
}
}
public class TemporaryFile : IDisposable