如何使用C ++更改Windows 10壁纸?

时间:2019-06-11 17:44:19

标签: c++ windows winapi

我希望使用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(如评论和答案所建议)就可以解决问题。

1 个答案:

答案 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。