Thread Wallpaper Wechsel (24 answers)
Opened by jeans at 2009-08-09 17:23

topeg
 2009-08-09 22:48
#124020 #124020
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ich habe zwar keine Windows, aber ich würde einen etwas anderen Ansatz wählen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl

use strict;
use warnings;
# Use the Windows Registry
Win32::Registry;

# Dir of all useable Wallpapapers
my $base_dir = 'C:\Dokumente und Einstellungen\Ricco\Lokale Einstellungen\Anwendungsdaten\Microsoft\Wallpaper\\';

# get the actual Wallpaper from Registry
my $filename=$HKEY_CURRENT_USER->Open('Control Panel\Desktop')->GetValue('Wallpaper');

# Get all wallpapers in dir
my @files=sort glob("${base_dir}*.*");

# find next wallpaper
my $pos=0;
# last if the actual walpaper is found in list
while($pos<@files)
{
  last if ($filename eq $files[$pos]);
  $pos++;
}
# at end of list begin at start.
$pos=-1 if($pos>=$#files)

# get the next wallpaper in list
$pos++;
$filename=$files[$pos];

# set the path in registry
my $type=$HKEY_CURRENT_USER->Open('Control Panel\Desktop')->GetType('Wallpaper');
my $filename=$HKEY_CURRENT_USER->Open('Control Panel\Desktop')->SetValue('Wallpaper',$type,$filename); 


Die Idee ist den Wert direkt in der WinRegistry zu ändern, anstatt die Datei zu ersetzen. Das hat gleich mehrere Vorteile:
-Der Wechsel ist schneller.
-Es muss keine Datei ersetzt werden.
-Das System bekommt sofort mit, dass der Hintergrund sich geändert hat.
-Der Dateityp bleibt korrekt (jpeg != bmp != gif etc.)
-Man wechselt tatsächlich immer zum nächsten Bild


Aber wie schon gesagt, ich habe es nicht getestet. Das müssen dir andere helfen, die Windows verwenden.



Edit:
Code Zeile 12 ";" und Zeile 22 ")"
Edit2:
Fehlerhaftes quote in Zeile 9 beseitigt.
Last edited: 2009-08-10 16:47:07 +0200 (CEST)

View full thread Wallpaper Wechsel