我希望使用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
(在评论和答案中建议)可以解决问题。 最佳答案
我相信您应该使用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。