C++ 根據副檔名獲取檔案圖示、型別
阿新 • • 發佈:2018-11-25
轉自:https://blog.csdn.net/liang19890820/article/details/51822438#原始碼
在 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; }