C++根据扩展名获取文件图标、类型

来源:互联网 发布:男士护肤推荐 知乎 编辑:程序博客网 时间:2024/05/24 03:54

简述

在Windows系统中,根据扩展名来区分文件类型,比如:.txt(文本文件)、.exe(可执行程序)、*.zip(压缩文件),下面,我们来根据扩展名来获取对应的文件图标、类型。

  • 简述
  • 源码

源码

如下,我们根据扩展名来获取对应的文件图标、类型。

#include <windows.h>#include <iostream>// 获取文件图标HICON fileIcon(std::string extention){    HICON icon = NULL;    if (extention.length() > 0)    {        LPCSTR name = extention.c_str();        SHFILEINFOA info;        if (SHGetFileInfoA(name,            FILE_ATTRIBUTE_NORMAL,            &info,            sizeof(info),            SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_USEFILEATTRIBUTES))        {            icon = info.hIcon;        }    }    return icon;}// 获取文件类型std::string fileType(std::string extention){    std::string type = "";    if (extention.length() > 0)    {        LPCSTR name = extention.c_str();        SHFILEINFOA info;        if (SHGetFileInfoA(name,            FILE_ATTRIBUTE_NORMAL,            &info,            sizeof(info),            SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES))        {            type = info.szTypeName;        }    }    return type;}// 获取文件夹图标HICON folderIcon(){    std::string str = "folder";    LPCSTR name = str.c_str();    HICON icon = NULL;    SHFILEINFOA info;    if (SHGetFileInfoA(name,        FILE_ATTRIBUTE_DIRECTORY,        &info,        sizeof(info),        SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_USEFILEATTRIBUTES))    {        icon = info.hIcon;    }    return icon;}// 获取文件夹类型std::string folderType(){    std::string str = "folder";    LPCSTR name = str.c_str();    std::string type;    SHFILEINFOA info;    if (SHGetFileInfoA(name,        FILE_ATTRIBUTE_DIRECTORY,        &info,        sizeof(info),        SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES))    {        type = info.szTypeName;    }    return type;}
0 0
原创粉丝点击