jens4ever
Goto Top

Mit VBSkript ein Wallpaper setzen

Hallo all,

ich fand im Netz dieses Skript um ein Bild als Wallpaper zu setzten.

Leider funktioniert es nicht mit Pfaden die Leerzeichen haben. Habe zwar was gefunden, wie man VB beibringt, dass es Leerzeichen gibt, bekomme es aber nicht zusammen, weil der Befehl ganz anders heißt.

Kann jemand so nett sein und mir bei dieser Sache aushelfen? Dankesehr.
Jens

dim shell
dim user
Set shell = WScript.CreateObject("WScript.Shell")  
user = shell.ExpandEnvironmentStrings("%USERNAME%")  
Set fso = CreateObject("Scripting.FileSystemObject")  
windowsDir = fso.GetSpecialFolder(0)
wallpaper = "C:\Leer zeichen\test.jpg"  
shell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", wallpaper  
shell.Run "%winDir%\system32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True  

Content-Key: 245183

Url: https://administrator.de/contentid/245183

Printed on: April 16, 2024 at 07:04 o'clock

Member: emeriks
emeriks Jul 31, 2014 at 08:39:17 (UTC)
Goto Top
Hi

Zeile 07: wallpaper = """C:\Leer zeichen\test.jpg"""

E.
Member: Jens4ever
Jens4ever Jul 31, 2014 at 08:48:24 (UTC)
Goto Top
Danke. Jetzt gibt es keine Fehlermeldung mehr, aber der Desktop zeigt nicht das Bild an, sondern wird einfach nur schwarz. (Pfad ist natürlich angepasst, Pfad getestet.)

Hast du eine Idee, woran das liegen könnte? Danke vorab. face-smile
Member: emeriks
emeriks Jul 31, 2014 at 08:54:56 (UTC)
Goto Top
Wird das Bild nach Neuanmeldung gezeigt?
Versuch mal BMP statt JPG.

E.
Member: Jens4ever
Jens4ever Jul 31, 2014 at 09:47:46 (UTC)
Goto Top
Hallo!
Funktioniert nicht mit bmp und auch nicht nach Neuanmeldung/Neustart. Es läuft aber mit dem Skript oben (, das ich postete), wenn halt kein Pfad mit Leerzeichen drin ist. Vielleicht ist es einfacher erst das jpg von der Quelle nach z.B. C:\Bild.jpg zu kopieren um es ohne Leerzeichen da zu haben. Vorausgesetzt der VB-Kopierjob kann mit Leerzeichen um ;)

Danke falls du oder jemand anderes noch nen Tipp ha(s)t.
Jens
Member: emeriks
emeriks Jul 31, 2014 at 10:39:47 (UTC)
Goto Top
Na dann benutze doch den 8.3-Namen der Datei.
Mit "dir /x" bekommst Du die 8.3 Namen der Verzeichnisse und Dateien aus

Ausgabe von "dir C:\ /x":

28.05.2014 10:36 <DIR> PROGRA~1 Program Files
24.06.2014 09:42 <DIR> PROGRA~2 Program Files (x86)

beachte "PROGRA~1".

Allerdings muss man hier beachten, dass das "~1" "dynamisch" ist. Soll heißen, es wird in der Reihenfolge des Erstellens der Ordner und Dateien bei Dopplungen in den ersten 6 Buchstaben hochgezählt. Wenn das auf verschiedenen Computern in verschiedener Reihenfolge passiert, dann stimmen die Nummern nicht überein. Insofern also nicht idiotensicher.

Besser, Du nimmst gleich nur Namen ohne Leerzeichen.

E.
Member: rubberman
rubberman Jul 31, 2014 at 16:33:25 (UTC)
Goto Top
Hallo Zusammen.

Ja, 8.3 könnte funktionieren (auch wenn ich glaube ich diese Art von Wallpaper-Ersetzung das letzte mal unter XP zum Laufen gebracht habe ...)

@Jens4ever
bringe mal zwischen Zeile 7 und 8 folgenden Code:
wallpaper = fso.GetFile(wallpaper).ShortPath
Grüße
rubberman
Member: Jens4ever
Jens4ever Aug 01, 2014 at 19:23:19 (UTC)
Goto Top
Also: Ich kann das Thema nicht als gelöst markieren, da es mit VBS nicht zuverlässig funktioniert. Mal aktualisiert er es mit diesem Skript, mal nicht. Nervig und war früher schon so. Auch wenn ich es per Batch mache das Gleiche. Ich habe mein Anliegen aber nun (leider) mit einer Drittanbieter-Software gelöst. John Background Switcher ist ein tolles Tool, das ich empfehlen kann für alle, die zuverlässig das Wallpaper tauschen wollen.

Danke an alle Helfer.