用API函数:SHGetFileInfo就可以了。

解决方案 »

  1.   

    我记得用API:ExtractIcon,
    定义:Public Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long;
    可以把exe,dll等文件中的所有icon都取出来。
      

  2.   

    使用ShGetFileInfo,返回ImageList的Handle,将这个ListView的Images的Handle指向这个之就可以了,我使用BCB实现如下:
        THandle ImageList;
        SHFILEINFO * FileInfo=new SHFILEINFO();
        ImageList=SHGetFileInfo("C:\\",0,FileInfo,sizeof(SHFILEINFO),SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
        SendMessage(lstvwOriginalFiles->Handle,LVM_SETIMAGELIST,LVSIL_SMALL,ImageList);
        ImageList=SHGetFileInfo("C:\\",0,FileInfo,sizeof(SHFILEINFO),SHGFI_SYSICONINDEX | SHGFI_LARGEICON);
        SendMessage(lstvwOriginalFiles->Handle,LVM_SETIMAGELIST,LVSIL_NORMAL,ImageList);
        delete FileInfo;