前言
-
下面的代码的功能是将一张图片设置为桌面,同时复制一份命名为日期保存到一个文件夹中。
-
要注意参考博客中的代码设置桌面后重启会变成纯黑桌面,只需要把桌面设置函数的第二个参数从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;
}