当前位置:主页   - 电脑 - 程序设计 - C#
C#中通过API调用获取文件图标
来源:网络   作者:   更新时间:2012-02-06
收藏此页】    【字号    】    【打印】    【关闭

  在C#中要获取各种文件的图标,可以通过API调用来完成。主要的函数是SHGetFileInfo.在C#中操作的方式如下 :

  第一步:准备SHGetFileInfo需要的各种参数类型。

1.FileInfoStruct
  [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;
  }
2.FileInfoFlags
  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 [Page]
    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
  }
3.FileAttributeFlags(这个.net中好像已经有了)
  public  enum FileAttributeFlags : int
  ...{
    FILE_ATTRIBUTE_READONLY = 0x00000001 ,
    FILE_ATTRIBUTE_HIDDEN = 0x00000002 ,
    FILE_ATTRIBUTE_SYSTEM = 0x00000004 ,
    FILE_ATTRIBUTE_DIRECTORY = 0x00000010 ,
     FILE_ATTRIBUTE_ARCHIVE = 0x00000020 ,
    FILE_ATTRIBUTE_DEVICE = 0x00000040 , [Page]
    FILE_ATTRIBUTE_NORMAL = 0x00000080 ,
    FILE_ATTRIBUTE_TEMPORARY = 0x00000100 ,
    FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 ,
    FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 ,
    FILE_ATTRIBUTE_COMPRESSED = 0x00000800 ,
    FILE_ATTRIBUTE_OFFLINE = 0x00001000 ,
    FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 ,
    FILE_ATTRIBUTE_ENCRYPTED = 0x00004000
  }

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明