C语言/C++语言如何将照片设置桌面背景!!

想要用c++语言去实现照片设置为桌面背景图,然后可以切换多张照片,需要怎么做呀?

把需要切换的图片路径写入一个txt文件,然后再程序中读取,定时切换即可(或者直接再代码中把需要切换的图片路径保存到数组中)。
通过读取文件的方式,代码如下(该方式下,注意编码方式不要使用UNICODE,否则图片路径中含有中文时会导致切换无效--会黑屏):

#include <Windows.h>
#include <fstream>
#include <iostream>
#include <string>
#include <io.h>
using namespace std;

//必须使用多字符集(使用UNICODE会不起作用--黑屏)

LPSTR UTF8ToGB(const char* str)
{
    string result;
    WCHAR* strSrc;
    LPSTR szRes;

    //获得临时变量的大小
    int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
    strSrc = new WCHAR[i + 1];
    MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);

    //获得临时变量的大小
    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
    szRes = new CHAR[i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    result = szRes;
    delete[]strSrc;
    //delete[]szRes;

    return szRes;
}

//从文件中读取图片信息,并定期更换桌面背景,文件中的图片必须用绝对路径
int main()
{
    char buf[20][100];
    int i, n=0;

    ifstream ofs;
    ofs.open("./background.txt");
    if (!ofs.is_open())
    {
        cout << "文件打开失败" << endl;
        return 0;
    }
    while (!ofs.eof())
    {
        ofs.getline(buf[n], 100);
        //判断文件是否存在
        ifstream ii;
        ii.open(buf[n]);
        if (ii.is_open())
        {
            n++;
            ii.close();
        }
            
    }
    ofs.close();
    while (1)
    {
        for (i = 0; i < n; i++)
        {
            LPSTR ff = UTF8ToGB(buf[i]);
            cout << ff << endl;
            SystemParametersInfo(SPI_SETDESKWALLPAPER, TRUE, (void*)buf[i], SPIF_UPDATEINIFILE);
            delete[] ff;
            Sleep(5000); //5秒更新一次
        }
    }
    return 0;
}

background.txt内容(根据你的实际情况更改路径):

D:/project/vc/test/Project1/Project1/pic/1.jpeg
D:/project/vc/test/Project1/Project1/pic/2.jpeg
D:/project/vc/test/Project1/Project1/pic/3.jpeg
D:/project/vc/test/Project1/Project1/pic/4.jpeg

SystemParametersInfo函数可以设置

#include <stdio.h>
#include <Windows.h>
 
int main()
{
    // 第二个参数没有提示,填个0,就行了。
 //第一次换图最好拿系统自带的桌面来换,网上下载的很可能不行,我耗了几小时,才发现是图的问题.
    if(SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "E:\\我就是壁纸.jpeg", SPIF_SENDCHANGE|SPIF_UPDATEINIFILE))
    {
        printf("更换成功!\n");
    }
    else
    {
        printf("更换失败\n");
    }
    return 0;
}