SystemParametersInfo返回0

时间:2013-01-31 20:51:20

标签: c++ winapi

#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.我做错了什么?

2 个答案:

答案 0 :(得分:3)

执行documentation所说的内容,并致电GetLastError以找出错误背后的原因。

有些可能的原因让人想起:

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

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


请注意文档说:

  

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

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

答案 1 :(得分:0)

不知道我们掌握的信息。

此返回值表示呼叫失败。您需要致电GetLastError()以获取有关原因的信息。