我刚刚学习 C++,正在尝试编写一个小程序来更改桌面墙纸。使用文档 here ,我写了这个程序:
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")
void main(){
BOOL success = SystemParametersInfo(
SPI_SETDESKWALLPAPER, //iuAction
0, //uiParam
"C:\\test.jpg", //pvParam
SPIF_SENDCHANGE //fWinIni
);
if (success){
printf("Success!\n");
}else
printf("Failure =(\n");
}
当我尝试为 pvParam 指定文件路径时,程序总是失败。如果我将 pvParam 设置为“”,它将正确清除墙纸。我做错了什么?
谢谢 -Abhorsen
最佳答案
除了 Dennis 对 JPEG 文件的评论之外,是否使用有效的 UNICODE 进行编译也很重要。如果这样做,则必须将文件指定为 L"C:\test.jpg"。注意字符串前面的 L,这使它成为一个宽字符串。或使用 SystemParametersInfoA(),注意 A(但它是过时的)。
关于c++ - 使用 SystemParametersInfo 函数设置桌面墙纸时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867952/