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

xpcnnkqh  于 2023-03-19  发布在  Windows
关注(0)|答案(1)|浏览(232)

我正在寻找改变在C++使用Windows API的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(如评论和回答中所建议的)成功了。

zlhcx6iw

zlhcx6iw1#

我认为您应该使用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;
}

如果SystemParametersInfoW()改变了背景,它应该返回true,为了在运行应用程序时清晰起见,我将其打印为result

相关问题