我正在尝试使用.png文件将桌面背景/壁纸更改为其他图像。虽然当我运行程序时,背景变为纯黑色。
我确信我在我的代码中正确输入了文件名“ksa.png”,成为我想要在我的背景上的图像。我使用if条件在错误发生时写出文件的最后一个错误,如果没有错误发生,则使用else条件写出“Success”;但是当我运行程序时,它会将“Success”写入文件。我曾考虑使用.jpg文件,认为也许.png文件不起作用。我尝试使用它时会给出更新。
#include <windows.h>
#include <fstream>
int main () {
const wchar_t *filenm = L"ksa.png";
std::ofstream log;
if (SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)filenm, SPIF_UPDATEINIFILE) == FALSE) {
log.open("log.txt");
log << "Error: " << GetLastError();
log.close();
}
else {
log.open("log.txt");
log << "Success";
log.close();
}
return 0;
}
当我运行此程序时,桌面背景被设置为图像“ksa.png”。相反,它是纯黑色。感谢您提供帮助,感谢您的帮助。
好的,所以我将代码更新到运行.jpg文件的位置,我仍然得到相同的结果。另外我在log.open("log.txt")
函数之前移动了行SystemParametersInfo()
命令,就像Remy Lebeau建议的那样,它仍然向文件写出“Success”。我还有同样的问题。这是我更新的代码:
#include <windows.h>
#include <fstream>
int main () {
const wchar_t *filenm = L"3.jpg";
std::ofstream log;
log.open("log.txt");
if (SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)filenm, SPIF_UPDATEINIFILE) == FALSE) {
log << "Error: " << GetLastError();
log.close();
}
else {
log.open("log.txt");
log << "Success";
log.close();
}
return 0;
}
嗯,您的图片路径有问题。我试过你的代码。除非使用绝对路径,否则无法在相对路径下获取图片。
就像Cody Gray♦的判断。
const wchar_t *filenm = L"C:\\Users\\strives\\Desktop\\timg.bmp";