|
|
|
|
Автор:
|
Stas6
|
|
Тема:
|
C# и SHGetFileInfo
|
|
Дата:
|
7/15/2004 3:49:00 PM
|
Надо определить описание файла по его расширению (для txt - текстовый файл и т.д.)
public const uint SHGFI_TYPENAME = 0x000000400;
public const uint SHGFI_USEFILEATTRIBUTES = 0x000000010; // ну и остальные
[StructLayout(LayoutKind.Sequential)]
public struct SHFILEINFO
{
public const int NAMESIZE = 80;
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_PATH)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = NAMESIZE)]
public string szTypeName;
}
[DllImport("Shell32.dll")]
public static extern IntPtr SHGetFileInfo(
string pszPath,
uint dwFileAttributes,
ref SHFILEINFO psfi,
uint cbFileInfo,
uint uFlags);
вызываю
SHGetFileInfo("*.txt", FILE_ATTRIBUTE_NORMAL, ref shfi, (uint)Marshal.SizeOf(shfi), SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES);
проблема в том что в зависимости от параметров получить можно всю структуру SHFILEINFO (и иконки, и имя и атрибуты), но вот именно szFileType постоянно пустая строка
|
|
|
|