根据文件名和扩展名获得该文件的图标

C# 代码

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Runtime.InteropServices;
using  System.Drawing;

namespace  WindowsApplication
{
    
///   <summary>   
    
///   Summary   description   for   ExtractIcon.   
    
///   </summary>   

    public class ExtractIcon
    
{
        [DllImport(
"Shell32.dll")]
        
private static extern int SHGetFileInfo
        (
        
string pszPath,
        
uint dwFileAttributes,
        
out   SHFILEINFO psfi,
        
uint cbfileInfo,
        SHGFI uFlags
        );

        [StructLayout(LayoutKind.Sequential)]
        
private struct SHFILEINFO
        
{
            
public SHFILEINFO(bool b)
            
{
                hIcon 
= IntPtr.Zero; iIcon = 0; dwAttributes = 0; szDisplayName = ""; szTypeName = "";
            }

            
public IntPtr hIcon;
            
public int iIcon;
            
public uint dwAttributes;
            [MarshalAs(UnmanagedType.LPStr, SizeConst 
= 260)]
            
public string szDisplayName;
            [MarshalAs(UnmanagedType.LPStr, SizeConst 
= 80)]
            
public string szTypeName;
        }
;

        
private ExtractIcon()
        
{
        }


        
private enum SHGFI
        
{
            SmallIcon 
= 0x00000001,
            LargeIcon 
= 0x00000000,
            Icon 
= 0x00000100,
            DisplayName 
= 0x00000200,
            Typename 
= 0x00000400,
            SysIconIndex 
= 0x00004000,
            UseFileAttributes 
= 0x00000010
        }


        
///   <summary>   
        
///   Get   the   associated   Icon   for   a   file   or   application,   this   method   always returns   
        
///   an   icon.     If   the   strPath   is   invalid   or   there   is   no   idonc   the   default icon   is   returned   
        
///   </summary>   
        
///   <param   name="strPath">full   path   to   the   file</param>   
        
///   <param   name="bSmall">if   true,   the   16x16   icon   is   returned   otherwise   the 32x32</param>   
        
///   <returns></returns>   

        public static Icon GetIcon(string strPath, bool bSmall)
        
{
            SHFILEINFO info 
= new SHFILEINFO(true);
            
int cbFileInfo = Marshal.SizeOf(info);
            SHGFI flags;
            
if (bSmall)
                flags 
= SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes;
            
else
                flags 
= SHGFI.Icon | SHGFI.LargeIcon | SHGFI.UseFileAttributes;

            SHGetFileInfo(strPath, 
256out   info, (uint)cbFileInfo, flags);
            
return Icon.FromHandle(info.hIcon);
        }

    }

}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值