by David Trep (2 Submissions)
Category: Windows API Call/Explanation
Compatability: Visual Basic 3.0
Difficulty: Beginner
Date Added: Wed 3rd February 2021
Rating: (2 Votes)
These are API calls that will allow you to change the wallpaper (instant update) and turn on the screensaver. I looked for examples of this on PCS and never found any that worked. These do.
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
Private Const SPI_SETSCREENSAVEACTIVE = 17
Private Const SPIF_UPDATEINIFILE = &H1
Private Const SPIF_SENDWININICHANGE = &H2
Private Const SPI_GETSCREENSAVETIMEOUT = 14
Private Const SPI_SETSCREENSAVETIMEOUT = 15
Private Const SPI_SETDESKWALLPAPER = 20
Private Sub ChangeWallPaper(strWP As String)
Dim ret As Long
ret = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, strWP, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
End Sub
Private Sub ClearWallPaper()
Dim ret As Long
ret = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, "(None)", SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
End Sub
Private Function ScreenSaverActive(Value As Boolean)
Call SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, Value, 0&, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
End Function
Public Function SetScreenSaverTimeOut(ByVal NewValueInMinutes As Long) As Boolean
'Sets Screen Saver Timeout in Minutes
Dim lRet As Long
Dim lSeconds As Long
lSeconds = NewValueInMinutes * 60
lRet = SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, lSeconds, ByVal 0&, SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE)
SetScreenSaverTimeOut = lRet <> 0
End Function