我希望使用Windows API更改C ++中的Windows桌面背景墙纸。
我已经阅读了有关该主题的以下帖子:
问题:
当我执行代码时,桌面背景会变成全黑,就像上面的帖子一样(是的,我确实尝试了该帖子中建议的修复方法。祝您好运。)
代码:
#include <windows.h>
int main() {
std::string s = "C:\\picture.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID*)s.c_str(), SPIF_SENDCHANGE);
return 0;
}
我也只尝试了(void*)
而不是上面的(PVOID*)
,并且在字符串的前面尝试了L
。到目前为止没有任何效果。
已解决:
将SystemParametersInfo
更改为SystemParametersInfoA
(如评论和答案所建议)就可以解决问题。
答案 0 :(得分:2)
我相信您应该使用wchar_t
作为SystemParametersInfo()
的输入而不是字符串,并且还应该使用SystemParametersInfoW()
。
以下代码对我有用:
#include <windows.h>
#include <iostream>
int main() {
const wchar_t *path = L"C:\\image.png";
int result;
result = SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, (void *)path, SPIF_UPDATEINIFILE);
std::cout << result;
return 0;
}
如果结果能够更改背景,则结果应返回true。