我正在学习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
答案 0 :(得分:4)
除了Dennis关于JPEG文件的评论之外,无论您是否使用UNICODE进行编译,这一点也很重要。如果这样做,则必须将文件指定为L“C:\ test.jpg”。注意字符串前面的L,这使它成为一个宽字符串。或者使用SystemParametersInfoA(),注意A(但它是古老的)。
答案 1 :(得分:0)
根据操作系统版本,pvParam可能无效。
如果您使用的是Windows XP和JPEG文件,并尝试将其指定为壁纸,请注意文档中的注释:
Windows Server 2003和Windows XP / 2000:pvParam参数不能 指定一个.jpg文件。