-1
#include <iostream>
#include <windows.h>
using namespace std;

int main(){
    LPWSTR test = L"C:/aizen.png";
    int result = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, test, SPIF_UPDATEINIFILE);
    if(result)
        cout << "Wallpaper set!";
    else
        cout << "NOOOOO!" << result;
    cin >> result;
    return 0;
}

非常简单的代码,但结果返回 0。我做错了什么?

4

2 回答 2

3

按照文档中的说明进行操作,并致电GetLastError找出错误背后的原因。

一些可能的原因浮现在脑海中:

  • SystemParametersInfo不喜欢正斜杠作为分隔符。
  • 系统不喜欢 .png 文件作为壁纸。
  • 该文件不存在。
  • 您的 ANSI/Unicode 编码不匹配。
  • 您无权修改壁纸。

真的,名单是无穷无尽的。所以让系统告诉你。


请注意,文档说:

使用SPI_SETDESKWALLPAPER标志时,SystemParametersInfo始终返回TRUE.

但这是一个很大的谎言。SPI_SETDESKWALLPAPER调用函数、传递和接收FALSE作为回报非常容易。

于 2013-01-31T20:54:09.213 回答
0

不知道我们掌握的信息。

该返回值表示调用失败。您需要致电GetLastError()了解原因。

于 2013-01-31T20:54:49.263 回答