开发者

Problem setting desktop wallpaper using SystemParametersInfo Function

I am just learning C++ and am trying to write a small program to change the desktop wallpaper. Using the documentation here, I wrote this program:

#include <windows.h>
#include <开发者_运维百科stdio.h>
#pragma comment(lib, "user32.lib")

void main(){

    BOOL success = SystemParametersInfo(
    SPI_SETDESKWALLPAPER,   //iuAction
    0,                      //uiParam
    "C:\\test.jpg",         //pvParam
    SPIF_SENDCHANGE         //fWinIni
    );
    if (success){
        printf("Success!\n");
    }else
        printf("Failure =(\n");
}

The program always fails when I try to specify a file path for pvParam. It will correctly clear the wallpaper if I set pvParam to "". What am I doing wrong?

Thanks -Abhorsen


It addition to Dennis' comment about JPEG files, it is also important whether or not you compile with UNICODE in effect. If you do then you'll have to specify the file as L"C:\test.jpg". Note the L in front of the string, that makes it a wide string. Or use SystemParametersInfoA(), note the A (but it's archaic).


Depending on the OS version, pvParam might not work.

If you are using Windows XP coupled with a JPEG file you are trying to assign as a wallpaper, notice the comment in the docs:

Windows Server 2003 and Windows XP/2000: The pvParam parameter cannot specify a .jpg file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜