-----------------------  
//  FAQ整理:ccrun(老妖)  
//  2005.11.30  
-----------------------

请教:知道文件扩展名,如何获得在系统中该文件类型的图标?
---------------------------------------------------------------
1. 用SHGetFileInfo函数:
SHFILEINFO sfi;
memset(&sfi, 0, sizeof(sfi));
DWORD Index = SHGetFileInfo("c://boot.ini",
        FILE_ATTRIBUTE_NORMAL,
        &sfi,
        sizeof(sfi),
        SHGFI_SYSICONINDEX | SHGFI_ICON);
if (sfi.hIcon != NULL)
{
    Image1->Picture->Icon->Handle = sfi.hIcon;
}

2. 查注册表:
比如查找.ini文件的图标:
HKEY_CLASSES_ROOT/inifile/DefaultIcon
%SystemRoot%/System32/shell32.dll,-151

3. 用ExtractAssociatedIcon函数:
HICON GetIconByExt(AnsiString FileExt)
{
    bool Exists;
    WORD wIndex;
    HICON hIcon;
    AnsiString file;

file = AnsiString("C://test.") + FileExt;
    Exists = FileExists(file);
    if(!Exists)
        FileClose(FileCreate(file));
    hIcon = ExtractAssociatedIcon((HINSTANCE)HInstance, file.c_str(), &wIndex);
    if(!Exists)
        DeleteFile(file);
    return hIcon;
}

SHGetFileInfo、ExtractAssociatedIcon等函数好象不能返回不存在的文件的图标.   (如果根据不同的扩展名创建一个假文件,   获取图标后又删除,   未免太不专业了吧)能不能根据扩展名取得相关图标?   或其它方式?请专家指点该如何去做到?    
  回答:    
   
          SHGetFileInfo可以按文件类型取图标,如:    
            SHFILEINFO   sfi;    
            HIMAGELIST   hil;    
             
            ZeroMemory(&sfi,sizeof(sfi));    
            hil   =   SHGetFileInfo(".zip",    
            FILE_ATTRIBUTE_NORMAL,    
            &sfi,    
            sizeof(sfi),    
            SHGFI_USEFILEATTRIBUTES|SHGFI_ICON);    
  取得本身程序所在目录  
  ExtractFilePath(Application->ExeName)   先用GetModuleFileName()获得程序的全路径,再用AfxGetApp()->m_pszExeName获得程序名

知道文件扩展名,如何获得在系统中该文件类型的图标相关推荐

  1. java 获取文件扩展名_如何在Java中获取文件扩展名

    java 获取文件扩展名 Sometimes while working with files, we need to process them differently based on their ...

  2. win12服务器文件设置只读,如何在Win10系统中更改文件夹的只读或系统属性

    正常情况下通过右键属性只能更改文件的只读属性,系统win10属性则连相应选项都没有.那么如何在Win10系统中更改文件夹的只读或系统属性呢?下面跟着学习啦小编来一起了解下吧. 在Win10系统中更改文 ...

  3. Windows文件扩展名大全,不断添加中

    323 H.323 Internet 电话服务 text/h323 386 虚拟设备驱动程序 3GP 3GPP 剪辑 video/3gpp 669 Winamp 媒体文件 7Z WinRAR 压缩文件 ...

  4. 根据文件名或文件扩展名获取文件的默认图标

    新建一个vs2010 窗体项目,新建按钮button和图片picturebox 下面是程序 using System; using System.Collections.Generic; using ...

  5. 如何自动备份指定文件扩展名的文件?

    关于文件扩展名 文件扩展名,一个点后跟几个字母,例如".doc"或".jpg",构成计算机文档名称的结尾.保存文档时,请务必在单击"保存"之 ...

  6. 编程小知识:文件扩展名的作用是什么?通俗易懂的文件扩展名详解

    介绍 文件扩展名(filename extension)也称为文件的后缀名,是操作系统用来标记文件类型的一种机制,在Windows系统下,扩展名还可以告诉操作系统默认用什么软件打开文件.通常来说,一个 ...

  7. dreamweaver后缀名_在 Dreamweaver 中添加或编辑识别的文件扩展名

    如果您要对 Dreamweaver 中的以下问题进行故障诊断,请阅读本文: 打开文件时,出现此错误消息:"找不到此文件扩展名的有效编辑器." 代码视图中的颜色编码与所需文件类型的颜 ...

  8. DM3软件如何在linux中安装,DM3 文件扩展名: 它是什么以及如何打开它?

    DM3 疑难解答 频繁的 DM3 打开问题 ImageJ 不存在 你尝试加载 DM3 文件并收到错误,例如 "%%os%% 无法打开 DM3 文件扩展名". 通常,%%os%% 中 ...

  9. android spc 能卸载吗,SPC 文件扩展名: 它是什么以及如何打开它?

    SPC 文件并发症 打开 SPC 文件的麻烦 OpenSSL 未安装 你尝试加载 SPC 文件并收到错误,例如 "%%os%% 无法打开 SPC 文件扩展名". 通常,%%os%% ...

  10. 扩展名不见了?怎么批量给文件添加扩展名?

    概要:有时候由于我们的误操作,会导致我们本地文件的扩展名丢失,或者网上下载下来的文件本来就没有扩展名.这样会导致我们在打开文件的时候,系统不知道该用什么软件去打开这些文件.那我们怎么给这些扩展名不见的 ...

最新文章

  1. redis实现对账(集合比较)功能
  2. Linux --进程间通信--共享内存
  3. 数据分析之pandas常见的数据处理(四)
  4. js 得到select所有option里的值
  5. 从(0,0)到(n,n)——广度优先及其改进
  6. 浏览器的同源限制解决方案
  7. 数据挖掘算法之决策树算法总结
  8. oracle PL/SL编程基础
  9. linux下时间编程,Linux下的时间操作编程
  10. 乐视股票21日起停牌,集成播控平台变“黑屏”
  11. 安装Docker,配置阿里云加速和 docker-compose 国内镜像
  12. 标准时间标准Time Zone: GMT,UTC,DST,CST
  13. 解决超星网课问题之不能查询后台观看数据和不能观看超时被锁的课程
  14. 惠普m128fn中文说明书_惠普M128fp中文说明书
  15. 如何发送电子邮件到别人邮箱?
  16. 推荐几个学生毕业设计的项目文案
  17. HDFS java接口——实现目录增删文件读写
  18. 惠普暗影精灵4P拆机换风扇
  19. 物联网之路由器和交换机篇
  20. 国外物联网平台大盘点

热门文章

  1. cloud-utils
  2. matlab构建信道模型channel model, Rayleigh channel (NLoS), Rician channel (LoS)
  3. 基于用户的音乐推荐平台
  4. 多家技术公司喊停的人脸识别业务,被这家波兰网站玩火了!
  5. SecureCRT自动登录跳板机/堡垒机直连linux
  6. 【Hive】Beeline CLI介绍
  7. java并发-ReentrantReadWriteLock读写锁
  8. DownloadSDKServer.exe 是什么,DownloadSDKServer.exe 内存占用高怎么办
  9. rpm常用命令汇总 -- 安装,升级,查询,验证,卸载
  10. 电脑无法升级windows11的解决办法