Rubrik: System/Windows · Desktop/Bildschirm/Display | VB-Versionen: VB4, VB5, VB6 | 30.01.01 |
Desktop-Wallpaper zeitgesteuert ändern Ändern Sie das Hintergrundbild des Desktops zeitgesteuert aus Ihrer VB-Anwendung heraus. | ||
Autor: Heinz Prelle | Bewertung: | Views: 21.552 |
www.visual-basic5.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Im vorigen Tipp haben wir Ihnen gezeigt, wie man das Desktop-Hintergrundbild aus einer VB-Anwendung heraus ändern kann. Unser heutiger Tipp zeigt, wie Sie das Desktop-Hintergrundbild zeitgesteuert ändern können. Hierbei werden alle Bilder eines bestimmten Dateiordners berücksichtigt. Das Zeitintervall lässt sich frei festlegen.
' zunächst die benötigten API-Funktionen 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 SPIF_SENDWININICHANGE = &H2 Private Const SPI_SETDESKWALLPAPER = 20 Private Const SPIF_UPDATEINIFILE = &H1 ' Bilddatei (sFilename) muß BITMAP enthalten Public Sub SetDesktopWallpaper(ByVal sFilename As String) SystemParametersInfo SPI_SETDESKWALLPAPER, 0, sFileName, _ SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE End Sub ' alle BMP-Dateien eines best. Verzeichnisses ermitteln Private Function ReadGrafiken(ByVal sVerz As String, _ ByRef sFile() As String) As Integer Dim sName As String Dim intZaehler As Integer If Right$(sVerz,1) <> "\" Then sVerz = sVerz + "\" sName = Dir$(sVerz & "*.bmp") While sName <> "" ReDim Preserve sFile(intZaehler) sFile(intZaehler) = sVerz & sName intZaehler = intZaehler + 1 sName = Dir$() Wend ReadGrafiken = intZaehler End Function ' Haupt-Anwendung Dim sFile() As String Dim sCount As Integer Private Sub Form_Load() Dim Pfad As String ' Grafiken ermitteln Pfad = Command$ If Pfad = "" Then Pfad = App.Path sCount = ReadGrafiken(Pfad, sFile()) ' Zeitintervall: 5 Sekunden Timer1.Interval = 5000 Timer1.Enabled = (sCount>0) End Sub ' Bild im festgelegten Zeitintervall zufällig ' ermitteln und als Desktop-Hintergrund setzen Private Sub Timer1_Timer() Dim bIdx As Integer Randomize -Timer bIdx = Int(sCount * RND + 1) SetDesktopWallpaper sFile(bIdx) End Sub