自动设置桌面并保存

一键设置桌面并保存记录

Posted by chongjg on March 8, 2020

前言

  • 下面的代码的功能是将一张图片设置为桌面,同时复制一份命名为日期保存到一个文件夹中。

  • 要注意参考博客中的代码设置桌面后重启会变成纯黑桌面,只需要把桌面设置函数的第二个参数从0改成1即可重启后不重置。

  • 我整这个东西就是想把每日任务放到桌面上,有了这个稍微便捷一点点吧,还可以自动记录。

  • 本来还想弄一个txt2img的,这样就不用进visio导出图片了,而是直接编辑文本。

  • 但是在github上找到的代码运行出了问题,弄了很久没能解决,暂时先不管了,要是我坚持每天完成任务坚持了几个月就来把这个坑填了。

代码

  • 由于to_string是C++11引入的新功能,在编译时需要加上“C++11”编译支持

  • 也就是在命令行里直接编译时可使用

g++ changeDesktop.cpp -o changeDesktop -std=c++11

#include<io.h>
#include<ctime>
#include<cstring>
#include<iostream>
#include<windows.h>

using namespace std;

string getYearMonthDay(){
    time_t timer;
    time(&timer);
    tm* t_tm = localtime(&timer);

    string Year = to_string(t_tm->tm_year+1900);
    string Month = to_string(t_tm->tm_mon+1);
    string Day = to_string(t_tm->tm_mday);

    return "record-" + Year + "-" + Month + "-" + Day;
}

int main(){
    string PictureFullPath = "C:/Users/chongjg/Mirror/Task/DailyRecord/todolist.png";

    if(SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, (PVOID)PictureFullPath.c_str(), 0)){
        SystemParametersInfoA(SPI_SETDESKWALLPAPER, true, (PVOID)PictureFullPath.c_str(), SPIF_SENDCHANGE);
        cout<<"桌面更新成功!"<<endl<<endl;

        string src = PictureFullPath;
        string dst = "C:/Users/chongjg/Mirror/Task/DailyRecord/pic/" + getYearMonthDay() + ".png";
        CopyFile(src.c_str(), dst.c_str(), false);//false代表覆盖,true不覆盖
    }
    else
        cout<<"桌面更新失败!"<<endl;

    return 0;
}

参考

获取bing图片并自动设置为电脑桌面背景