Const SPI_SETDESKWALLPAPER = 20
Const SPIF_UPDATEINIFILE = &H1
Private Declare Function SystemParametersInfo Lib "user32" Alias _
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)"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:windowssetup.bmp
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:windowssetup.bmp", _
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)SPIF_UPDATEINIFILE)
将桌面图片清掉
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "", SPIF_UPDATEINIFILE)
但以上程式设定图片之後, 必须等到下次 Windows 重新启动时才生效, 如果希望设定之後立刻生效, 则程式须修改如下:
Const SPIF_SENDWININICHANGE = &H2
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:windowssetup.bmp", _
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE )
此外希望只有本次使用 Windows 时改变桌面图片(下次开机时还原原状), 则程式如下:
Call SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:windowssetup.bmp", _
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)SPIF_SENDWININICHANGE ) ' 去掉 SPIF_UPDATEINIFILE
上述方法并不能设定图片的显示方式(包含「置於中央」、「并排」、及「展开」)怎样让在改变桌面图片时, 也设定显示方式呢?
方法就是在呼叫 SystemParametersInfo 之前, 利用改变登录资料库的以下设定值:
HKEY_CURRENT_USERControl PanelDesktopTileWallpaper
HKEY_CURRENT_USERControl PanelDesktopWallpaperStyle
这两个设定值的意义如下:
展开 TileWallpaper的设定值WallpaperStyle的设定值显示方式"0""0"置於中央"0""2"并排显示"1"-展开
注:所谓「展开」是当图片与萤幕不等大时, 将图片调整成语萤幕等大小, 这是 Windows 98 新增的功能, 但如果您的机器安装有 IE 4.x, 则 Windows 95 也具备相同的功能。