-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

しかし、これは大きな太った嘘です。関数を呼び出し、 pass SPI_SETDESKWALLPAPER、 receiveFALSEを返すのは簡単です。

于 2013-01-31T20:54:09.213 に答える
0

私たちが持っている情報ではわかりません。

この戻り値は、呼び出しが失敗したことを示します。GetLastError()理由については、電話で問い合わせる必要があります。

于 2013-01-31T20:54:49.263 に答える