zoukankan      html  css  js  c++  java
  • 如何获取文件在系统中的图标?


    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;
        }

    }
  • 相关阅读:
    js中对new Date() 中转换字符串方法toLocaleString的使用
    安装sass时遇到Failed to build gem native extension
    访问mapper方法提示invalid bound statement (not found)原因总结
    A query was run and no Result Maps were found for the Mapped Statement
    VS常用快捷键
    查看python和NumPy版本和安装路径
    Mybatis报错: There is no getter for property named xxx
    Map集合中get不存在的key值
    MySQL中DATA类型数据和DATATIME类型数据的比较
    shell 数组操作
  • 原文地址:https://www.cnblogs.com/dreign/p/627146.html
Copyright © 2011-2022 走看看