zoukankan      html  css  js  c++  java
  • C++根据扩展名获取文件图标、类型

    简述

    在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;
    }
  • 相关阅读:
    zabbix 组信息
    perl tk说明
    perl tk说明
    haproxy ssl相关配置
    haproxy ssl相关配置
    haproxy 关闭ssl 3.0 加密
    haproxy 关闭ssl 3.0 加密
    【华为敏捷/DevOps实践】4. 如何从Excel做项目管理的方式中走出来
    【华为云实战开发】13.如何在云端快速搭建python网站
    【华为云实战开发】12.如何在云端快速开展Swagger接口测试
  • 原文地址:https://www.cnblogs.com/itrena/p/5938289.html
Copyright © 2011-2022 走看看