• 如何获取文件在系统中的图标?



    public class SysIO2
    {
        
    public SysIO2()
        
    {
        }

        
    private const uint SHGFI_ICON = 0x100;
        
    private const uint SHGFI_LARGEICON = 0x0;
        
    private const uint SHGFI_SMALLICON = 0x1;
        
    public const uint SHGFI_USEFILEATTRIBUTES = 0x10;


        [DllImport(
    "kernel32.dll")]
        
    internal static extern void ExitProcess(int a);

        [DllImport(
    "shell32.dll")]
        
    private static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref   SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);

        [StructLayout(LayoutKind.Sequential)]
        
    private struct SHFILEINFO
        
    {
            
    public IntPtr hIcon;
            
    public IntPtr iIcon;
            
    public uint dwAttributes;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst 
    = 260)]
            
    public string szDisplayName;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst 
    = 80)]
            
    public string szTypeName;
        }

        
    /// <summary>
        
    /// 获取指定文件(或者扩展名)和系统关联的小图标
        
    /// </summary>
        
    /// <param name="strExtension">文件名,或者文件扩展名(.bmp等等)</param>
        
    /// <returns></returns>

        internal static Icon GetSmallIcon(string strExtension)
        
    {
            
    string strFileName = Path.GetExtension(strExtension);
            
    if (strFileName == "")
            
    {
                strFileName 
    = strExtension;
            }

            IntPtr hImgSmall;
            SHFILEINFO shinfo 
    = new SHFILEINFO();
            hImgSmall 
    = SHGetFileInfo(strFileName, 0ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
            Icon myIcon 
    = System.Drawing.Icon.FromHandle(shinfo.hIcon);
            
    return myIcon;
        }

        
    /// <summary>
        
    /// 获取指定文件(或者扩展名)和系统关联的大图标
        
    /// </summary>
        
    /// <param name="strExtension">文件名,或者文件扩展名(.bmp等等)</param>
        
    /// <returns></returns>

        internal static Icon GetLargeIcon(string strExtension)
        
    {
            
    string strFileName = Path.GetExtension(strExtension);
            
    if (strFileName == "")
            
    {
                strFileName 
    = strExtension;
            }

            IntPtr hImgLarge;
            SHFILEINFO shinfo 
    = new SHFILEINFO();
            hImgLarge 
    = SHGetFileInfo(strFileName, 0ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);
            Icon myIcon 
    = System.Drawing.Icon.FromHandle(shinfo.hIcon);
            
    return myIcon;
        }

    }
  • 相关阅读:
    CF919F A Game With Numbers
    CF1005F Berland and the Shortest Paths
    CF915F Imbalance Value of a Tree
    CF1027F Session in BSU
    CF1029E Tree with Small Distances
    CF1037E Trips
    CF508E Arthur and Brackets
    CF1042F Leaf Sets
    [HNOI2012]永无乡
    [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理
  • 原文地址:https://www.cnblogs.com/dreign/p/627146.html
Copyright © 2020-2023  润新知