Const SPI_SETDESKWALLPAPER = 20
Const SPIF_UPDATEINIFILE = &H1
Private Declare Function SystemParametersInfo Lib "user32" Alias _
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, _
ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, BMP圖檔名稱, _
SPIF_UPDATEINIFILE)
例如: 將桌面圖片設定成 c:\windows\setup.bmp
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\windows\setup.bmp", _
SPIF_UPDATEINIFILE)
將桌面圖片清掉
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "", SPIF_UPDATEINIFILE)
但以上程式設定圖片之後, 必須等到下次 Windows 重新啟動時才生效, 如果希望設定之後立刻生效, 則程式須修改如下:
Const SPIF_SENDWININICHANGE = &H2
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\windows\setup.bmp", _
SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE )
此外希望只有本次使用 Windows 時改變桌面圖片(下次開機時還原原狀), 則程式如下:
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\windows\setup.bmp", _
SPIF_SENDWININICHANGE ) ' 去掉 SPIF_UPDATEINIFILE
上述方法並不能設定圖片的顯示方式(包含「置於中央」、「並排」、及「展開」)怎樣讓在改變桌面圖片時, 也設定顯示方式呢?
方法就是在呼叫 SystemParametersInfo 之前, 利用改變登錄資料庫的以下設定值:
HKEY_CURRENT_USER\Control Panel\Desktop\TileWallpaper
HKEY_CURRENT_USER\Control Panel\Desktop\WallpaperStyle
這兩個設定值的意義如下:
展開 TileWallpaper的設定值WallpaperStyle的設定值顯示方式"0""0"置於中央"0""2"並排顯示"1"-展開
注:所謂「展開」是當圖片與螢幕不等大時, 將圖片調整成語螢幕等大小, 這是 Windows 98 新增的功能, 但如果您的機器安裝有 IE 4.x, 則 Windows 95 也具備相同的功能。