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

How to change the windows 10 wallpaper with C++?

本文关键字:壁纸 Windows 更改 何使用 C++      更新时间:2023-10-16

我希望使用Windows API更改C++中的Windows桌面背景壁纸。

我已经阅读了以下有关此主题的帖子:

  • 如何使用VC++更改桌面背景
  • 系统参数信息将墙纸设置为完全黑色(使用SPI_SETDESKWALLPAPER(

问题:

当我执行代码时,桌面背景变为完全黑色,如上面的帖子所示(是的,我确实尝试了该帖子中建议的修复程序。 没有运气。

法典:

#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;
}

如果SystemParametersInfoW()设法更改背景,则应返回 true。为了在运行应用程序时清晰起见,我将其打印出来result