by Jon Ripley, July 2007

Setting the Desktop wallpaper


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).

Removing the Desktop wallpaper


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.

Retrieving the current Desktop wallpaper


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.