如何在.NET中获取文件扩展名的描述
发布时间:2020-12-13 20:37:22 所属栏目:Windows 来源:网络整理
导读:HI, Windows提供文件扩展名的说明,例如.cpl文件的“控制面板项”和.daa文件的“PowerISO文件”.有什么办法可以在.NET中获取这些数据吗?我使用C#但可以读取所有其他.NET语言.还有一种方法可以获得扩展的默认图标吗?任何帮助,将不胜感激. 提前致谢 您可以使
HI,
Windows提供文件扩展名的说明,例如.cpl文件的“控制面板项”和.daa文件的“PowerISO文件”.有什么办法可以在.NET中获取这些数据吗?我使用C#但可以读取所有其他.NET语言.还有一种方法可以获得扩展的默认图标吗?任何帮助,将不胜感激. 提前致谢
您可以使用
SHGetFileInfo API获取该信息.这是一个包装方法:
public static string GetFileTypeDescription(string fileNameOrExtension) { SHFILEINFO shfi; if (IntPtr.Zero != SHGetFileInfo( fileNameOrExtension,FILE_ATTRIBUTE_NORMAL,out shfi,(uint)Marshal.SizeOf(typeof(SHFILEINFO)),SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME)) { return shfi.szTypeName; } return null; } [DllImport("shell32")] private static extern IntPtr SHGetFileInfo(string pszPath,uint dwFileAttributes,out SHFILEINFO psfi,uint cbFileInfo,uint flags); [StructLayout(LayoutKind.Sequential)] private struct SHFILEINFO { public IntPtr hIcon; public int iIcon; public uint dwAttributes; [MarshalAs(UnmanagedType.ByValTStr,SizeConst = 260)] public string szDisplayName; [MarshalAs(UnmanagedType.ByValTStr,SizeConst = 80)] public string szTypeName; } private const uint FILE_ATTRIBUTE_READONLY = 0x00000001; private const uint FILE_ATTRIBUTE_HIDDEN = 0x00000002; private const uint FILE_ATTRIBUTE_SYSTEM = 0x00000004; private const uint FILE_ATTRIBUTE_DIRECTORY = 0x00000010; private const uint FILE_ATTRIBUTE_ARCHIVE = 0x00000020; private const uint FILE_ATTRIBUTE_DEVICE = 0x00000040; private const uint FILE_ATTRIBUTE_NORMAL = 0x00000080; private const uint FILE_ATTRIBUTE_TEMPORARY = 0x00000100; private const uint FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200; private const uint FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400; private const uint FILE_ATTRIBUTE_COMPRESSED = 0x00000800; private const uint FILE_ATTRIBUTE_OFFLINE = 0x00001000; private const uint FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000; private const uint FILE_ATTRIBUTE_ENCRYPTED = 0x00004000; private const uint FILE_ATTRIBUTE_VIRTUAL = 0x00010000; private const uint SHGFI_ICON = 0x000000100; // get icon private const uint SHGFI_DISPLAYNAME = 0x000000200; // get display name private const uint SHGFI_TYPENAME = 0x000000400; // get type name private const uint SHGFI_ATTRIBUTES = 0x000000800; // get attributes private const uint SHGFI_ICONLOCATION = 0x000001000; // get icon location private const uint SHGFI_EXETYPE = 0x000002000; // return exe type private const uint SHGFI_SYSICONINDEX = 0x000004000; // get system icon index private const uint SHGFI_LINKOVERLAY = 0x000008000; // put a link overlay on icon private const uint SHGFI_SELECTED = 0x000010000; // show icon in selected state private const uint SHGFI_ATTR_SPECIFIED = 0x000020000; // get only specified attributes private const uint SHGFI_LARGEICON = 0x000000000; // get large icon private const uint SHGFI_SMALLICON = 0x000000001; // get small icon private const uint SHGFI_OPENICON = 0x000000002; // get open icon private const uint SHGFI_SHELLICONSIZE = 0x000000004; // get shell size icon private const uint SHGFI_PIDL = 0x000000008; // pszPath is a pidl private const uint SHGFI_USEFILEATTRIBUTES = 0x000000010; // use passed dwFileAttribute (大多数常量实际上并没有在那段代码中使用,但是无论如何我都会把它们放在你想要根据你的特定需求调整代码的情况下) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows – 转移角色后,Microsoft iSCSI目标服务器2016故障
- windows-server-2003 – 如何为使用通用打印机驱动程序到服
- 在Windows上安装rpy2时出错
- windows – 部署工作站 – 最佳实践?
- 无法将64位Windows 8.1 Pro Client加入Windows 2003域. Win
- Amanda,Bacula,BackupPC哪个有可靠的Windows客户端?
- windows – sublime text 2控制台仅显示gruntjs输出的第一行
- 历史 – 从CP / M到DOS将WordStar的单字节更改是什么?
- 如何在Windows命令提示符下每5分钟安排一个任务?
- 如何使用Powershell获取Windows服务的公司名称