比如,给一个文件:test.txt ,就可以根据“txt”这个扩展名来获取与之关联的记事本的(大小)图标。!
用什么api呢?
谢谢!

解决方案 »

  1.   

    查询注册表里相关项阿
    如.txt
    注册为txt files
    然后再txt files里有它的详细信息
      

  2.   

    思路: 从给出的文件中找到该文件的默认打开程序, 然后从该程序.exe或其主引用库.dll中获取图标。 下面只是从exe和dll获取图标的api.Public Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long说明:
    判断一个可执行文件或DLL中是否有图标存在,并将其提取出来返回值:
    Long,如成功,返回指向图标的句柄;如文件中不存在图标,则返回零。如果nIconIndex设为-1,就返回文件中的图标总数参数表:
      hInst ----------  Long,当前应用程序的实例句柄。也可用GetWindowWord函数取得拥有一个窗体或控件的实例的句柄  lpszExeFileName -  String,在其中提取图标的那个程序的全名  nIconIndex -----  Long,欲获取的图标的索引。如果为-1,表示取得文件中的图标总数
      

  3.   

    http://www.mvps.org/vbnet/index.html?code/toc/tocbytopic_f.htm
    Retrieving an Associated 16x16 Icon Using SHGetFileInfo
      

  4.   

    http://www.mvps.org/vbnet/index.html?code/toc/tocbytopic_f.htm
    Retrieving an Associated 16x16 Icon Using SHGetFileInfo
    不错的。
      

  5.   

    我用那个代码可以不行!我是想根据文件类型取得图标,不是根据具体的文件来获得。
    现在,有很多软件如"WinZip" 能在它的文件列表中显示各类文件相关的图标(exe等可执行文件例外)。 
        注:是压缩包里的文件列表, 不是磁盘上已存在的文件。 
        SHGetFileInfo、ExtractAssociatedIcon等函数好象不能返回不存在的文件的图标. (如果根据不同的扩展名创建一个假文件, 获取图标后又删除, 未免太不专业了吧)能不能根据扩展名取得相关图标? 或其它方式?