快乐的享受每一天

星期一,星期二,星期三,星期四,星期五

 

获取系统的图标(icon)

public static class fileicon
    {
        [DllImport("shell32.dll ", EntryPoint = "SHGetFileInfo")]
        public static extern int GetFileInfo(string pszPath, int dwFileAttributes,
            ref  FileInfoStruct psfi, int cbFileInfo, int uFlags);

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

        public   enum  FileInfoFlags :  int
            {
                SHGFI_ICON  = 0x000000100 ,  //  get icon
                SHGFI_DISPLAYNAME  = 0x000000200 ,  //  get display name
                SHGFI_TYPENAME  = 0x000000400 ,  //  get type name
                SHGFI_ATTRIBUTES  = 0x000000800 ,  //  get attributes
                SHGFI_ICONLOCATION  = 0x000001000 ,  //  get icon location
                SHGFI_EXETYPE  = 0x000002000 ,  //  return exe type
                SHGFI_SYSICONINDEX  = 0x000004000 ,  //  get system icon index
                SHGFI_LINKOVERLAY  = 0x000008000 ,  //  put a link overlay on icon
                SHGFI_SELECTED  = 0x000010000 ,  //  show icon in selected state
                SHGFI_ATTR_SPECIFIED  = 0x000020000 ,  //  get only specified attributes
                SHGFI_LARGEICON  = 0x000000000 ,  //  get large icon
                SHGFI_SMALLICON  = 0x000000001 ,  //  get small icon
                SHGFI_OPENICON  = 0x000000002 ,  //  get open icon
                SHGFI_SHELLICONSIZE  = 0x000000004 ,  //  get shell size icon
                SHGFI_PIDL  = 0x000000008 ,  //  pszPath is a pidl
                SHGFI_USEFILEATTRIBUTES  = 0x000000010 ,  //  use passed dwFileAttribute
                SHGFI_ADDOVERLAYS  = 0x000000020 ,  //  apply the appropriate overlays
                SHGFI_OVERLAYINDEX  = 0x000000040   //  Get the index of the overlay
            }
        public static Icon GetLargeIcon(string pFilePath)
            {
                FileInfoStruct _info  = new  FileInfoStruct();
                GetFileInfo(pFilePath,  0 ,  ref  _info, Marshal.SizeOf(_info),
                    ( int )(FileInfoFlags.SHGFI_ICON | FileInfoFlags.SHGFI_LARGEICON));
                try
                {
                    return  Icon.FromHandle(_info.hIcon);
                }
                catch
                {
                    return   null ;
                }
            }
        public static Icon GetSmallIcon(string pFilePath)
            {
            FileInfoStruct _info  = new  FileInfoStruct();
            GetFileInfo(pFilePath,  0 ,  ref  _info, Marshal.SizeOf(_info),
                ( int )(FileInfoFlags.SHGFI_ICON | FileInfoFlags.SHGFI_SMALLICON));
            try
                {
                return  Icon.FromHandle(_info.hIcon);
                }
            catch
                {
                 return   null ;
                }
             }
         }

posted on 2007-11-01 13:38  快乐的小宝  阅读(1414)  评论(0)    收藏  举报

导航