wurzelholz
Mitglied
Hallo Forum,
habe mir heute aus ein paar Programmschnipseln ein Tool gebastelt, welches selbstständig immer das Wallpaper austauscht. Leider wird der Desktophintergrund nicht neu gezeichnet wenn ich z. B. ein Fenster oder Icon verschiebe ---> es kommt blauer Hintergrund zum Vorschein.
Kann mir jemand bei meinem Problem helfen? Hab schon gesucht und paar Tips ausprobiert, leider ohne Erfolg.
Hier der Code des kompletten Projekts:
Auf der Forum ist ein Timer und der Common Dialog.
Vergesst nicht, wegen des FSO, die MS Scripting Runtime aus der scrrun.dll zu referenzieren!
Danke für eure Hilfe!
EDIT: Falscher Quellcode + noch ne Frage: Mir wechseln die Bilder zu schnell, wie kann ich den Timer auf 5min (30000ms) einstellen? Den Wert nimmt er mir ned... :[
habe mir heute aus ein paar Programmschnipseln ein Tool gebastelt, welches selbstständig immer das Wallpaper austauscht. Leider wird der Desktophintergrund nicht neu gezeichnet wenn ich z. B. ein Fenster oder Icon verschiebe ---> es kommt blauer Hintergrund zum Vorschein.
Kann mir jemand bei meinem Problem helfen? Hab schon gesucht und paar Tips ausprobiert, leider ohne Erfolg.
Hier der Code des kompletten Projekts:
Code:
Option Explicit
Dim ordnerpfad As String
Dim dateinamen As String
Dim dateinamenArray
'------- Deklarationen für Desktophintergrund ---------
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
Const SPIF_SENDWININICHANGE = &H2
Const SPI_SETDESKWALLPAPER = 20
Const SPIF_UPDATEINIFILE = &H1
'----------- Ende Deklarationen für Desktophintergrund-----
'------- Deklarationen für FSO ---------
Dim FSO As New FileSystemObject
'----------- Ende Deklarationen für FSO-----
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
DoEvents
Form1.Visible = False
ordnerpfad = InputBox("Geben Sie den Ordner mit Wallpapers an: ", "Bitte füttern", "C:\Documents and Settings\p859601\Desktop\wallpaper", 1050, 300)
Dim f As Folder
Dim fi As File
Dim fiLen As Long
Dim fiOnly As String
Dim strExt As String
'Verweis auf Ordner erstellen
Set f = FSO.GetFolder(ordnerpfad)
'Alle heruntergeladenen Dateien auflisten
For Each fi In f.Files
strExt = FSO.GetExtensionName(fi) 'Extension der Datei ermitteln
If strExt = "jpg" Or strExt = "gif" Or strExt = "tif" Then
fiLen = Len(fi)
fiOnly = Left(fi, fiLen - 3) 'länge des kompletten pfades - 3 Char dateiendung --> kein *.jpeg
fiOnly = fiOnly & "bmp"
If fi <> fiOnly Then
FSO.MoveFile fi, fiOnly
End If
End If
Next
For Each fi In f.Files
strExt = FSO.GetExtensionName(fi) 'Extension der Datei ermitteln
If strExt = "bmp" Then
dateinamen = dateinamen & " | " & fi
End If
Next
dateinamenArray = Split(dateinamen, " | ") ' Bereitstellung der Dateinamen
Timer1.Enabled = True
Call Timer1_Timer
End Sub
Private Sub Timer1_Timer()
CommonDialog1.Filter = ("BMP-Grafiken (*.BMP)|*.BMP")
CommonDialog1.InitDir = ordnerpfad 'Ordner
Dim i As Integer
For i = 1 To UBound(dateinamenArray)
CommonDialog1.FileName = dateinamenArray(i) 'Dateiname
DoEvents
SystemParametersInfo SPI_SETDESKWALLPAPER, 0, CommonDialog1.FileName, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE
DoEvents
UpdateWindow GetDesktopWindow
If i <> UBound(dateinamenArray) Then
i = i + 1
Else
i = 1
End If
DoEvents
Next i
End Sub
Auf der Forum ist ein Timer und der Common Dialog.
Vergesst nicht, wegen des FSO, die MS Scripting Runtime aus der scrrun.dll zu referenzieren!
Danke für eure Hilfe!
EDIT: Falscher Quellcode + noch ne Frage: Mir wechseln die Bilder zu schnell, wie kann ich den Timer auf 5min (30000ms) einstellen? Den Wert nimmt er mir ned... :[
Zuletzt bearbeitet: