by Jon Ripley, July 2007
To set the current Desktop wallpaper use the following code:
SPIF_UPDATEINIFILE = 1 SPI_SETDESKWALLPAPER = 20 SYS "SystemParametersInfo", SPI_SETDESKWALLPAPER, 0, filename$, SPIF_UPDATEINIFILE
Here the filename$ parameter is the full path to a bitmap image (.BMP) to set as the Desktop wallpaper. To use images in unsupported file formats - such as .GIF and .PNG - as Desktop wallpaper they must first be converted to Window bitmap (.BMP) format. Under Windows Vista filename$ can point to a JPEG image (.JPG or .JPEG).
To remove the current Desktop wallpaper use code similar to the following:
SPIF_UPDATEINIFILE = 1 SPI_SETDESKWALLPAPER = 20 SYS "SystemParametersInfo", SPI_SETDESKWALLPAPER, 0, "", SPIF_UPDATEINIFILE
Here the only difference is that the file name parameter is empty.
To retrieve the full path to the current Desktop wallpaper use code similar to the following:
MAX_PATH = 260 DIM wp% MAX_PATH - 1 SPI_GETDESKWALLPAPER = 115 SYS "SystemParametersInfo", SPI_GETDESKWALLPAPER, MAX_PATH, wp%, 0 BackDrop$ = $$wp%
Here BackDrop$ will contain the full path to the current Desktop wallpaper or NUL if no wallpaper is in use. As always, make sure you execute the DIM statement only once, or use DIM LOCAL, to avoid a memory leak and an eventual No room error.