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;
    }
  • 相关阅读:
    wqs二分
    FLAG区
    Codeforces | CF1033D 【Divisors】
    Nowcoder | [题解-N210]牛客OI月赛2-提高组
    Codeforces | CF1041F 【Ray in the tube】
    Nowcoder | [题解-N189]牛客OI赛制测试赛3
    Codeforces | CF1029F 【Multicolored Markers】
    Codeforces | CF1037D 【Valid BFS?】
    Codeforces | CF1028C 【Rectangles】
    Codeforces | CF1029C 【Maximal Intersection】
  • 原文地址:https://www.cnblogs.com/itrena/p/5938289.html
Copyright © 2011-2022 走看看