c++ 设置文件夹图标

180it 2020-10-16 PM 35℃ 0条
#include <iostream>
#include <string>
#include <windows.h>
 
int main(int argc, char *argv[])
{
    if(argc != 3)        // 判断参数个数,若小于 3 则输出提示
    {
        printf("\t\t**************************************\n");
        printf("\t\t\tSetDirIcon By Hoy0a1d.\n");
        printf("\t\t\tUsage:%s DirPath IconPath\n", argv[0]);
        printf("\t\t**************************************\n");
    }
    else
    {
        // 判断需要设置的文件夹是否存在
        if(GetFileAttributes(argv[1]) != INVALID_FILE_ATTRIBUTES)
        {
            // 判断 ico 文件是否存在
            if(GetFileAttributes(argv[2]) != INVALID_FILE_ATTRIBUTES)
            {
                char iniPath[MAX_PATH] = "";
                char icoPath[MAX_PATH] = "";
                // 在需要设置的文件夹下新建 desktop.ini
                strcat(iniPath, argv[1]);
                strcat(iniPath, "\\desktop.ini");
                // 将 ico 文件复制到文件夹下命名为 icon.ico
                strcat(icoPath, argv[1]);    
                strcat(icoPath, "\\icon.ico");
                // 复制文件,覆盖已有
                CopyFile(argv[2], icoPath, FALSE);
                // 设置 icon.ico 文件属性为隐藏
                SetFileAttributes(icoPath, FILE_ATTRIBUTE_HIDDEN);
                /* BOOL WritePrivateProfileString(
                    LPCTSTR lpAppName,    // INI文件中的一个字段名[节名]
                    LPCTSTR lpKeyName,  // lpAppName 下的一个键名
                    LPCTSTR lpString,   // 键值
                    LPCTSTR lpFileName  // INI文件的路径
                ); */
                if(WritePrivateProfileString(".ShellClassInfo", "IconResource", "icon.ico", iniPath) == true)
                {
                    // 设置 desktop.ini 文件属性为系统+隐藏
                    SetFileAttributes(iniPath, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
                    printf("Folder icon setting success!\n");
                }
                else
                    printf("Folder icon setting failed!\n");
            }
            else
                printf("ICO files do not exist.\n");
        }
        else
            printf("Folders do not exist.\n");
    }
    return 0;
}
支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

c++ 设置文件夹图标