Hier zwei Prozeduren mit denen man Hintergrund-Bilder ermitteln und setzen kann.
Mit
GetWallpaperSystem kann man den Pfad des Hintergrungbildes ermitteln. Weiterhin kann man ermitteln ob das Bild gekachelt und/oder gesteckt ist. Die Werte werden von der Prozedur in die Var-Parameter übertragen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| uses ..., Registry;
procedure GetWallpaperSystem(var sWallpaper: String; var bTile, bStrech: Boolean); begin with TRegIniFile.Create('Control Panel\Desktop') do try sWallpaper := ReadString('', 'Wallpaper', ''); bTile := ReadInteger('', 'TileWallpaper', 0) = 1; bStrech := ReadInteger('', 'WallpaperStyle', 0) = 2; finally Free end; end; |
Mit
SetWallpaperSystem kann man den Pfad des Hintergrungbildes festlegen. Weiterhin kann man festlegen ob das Bild gekachelt und/oder gesteckt sein soll. Die Werte können über Variablen oder Konstanten übergeben werden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
|
procedure SetWallpaperSystem(sWallpaper : String; bTile, bStrech: Boolean); const aTile: Array[Boolean] of Byte =(0, 1); aStrech: Array[Boolean] of Byte =(0, 2); begin with TRegIniFile.Create('Control Panel\Desktop') do try WriteString('', 'Wallpaper', sWallpaper); WriteInteger('', 'TileWallpaper', aTile[bTile]); WriteInteger('', 'WallpaperStyle', aStrech[bStrech]); finally Free end;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE); end; |
Bitte beachten, dass es keinen Sinn macht sTile und sStrech gleichzeitig auf Treu zu setzen. Zwar sind beiden Werte unabhängig von einander, aber es wird immer nur ein Wert beachtet. bTile hat eine höhere Priorität als bStrech. Um kein Hintergrundbild anzuzeigen muß man nur ein leeren sWallpaper String übergeben.
Hier einige Beispiele wie man Hintergrundbilder setzen kann.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| SetWallpaperSystem('c:\win98se\1stboot.bmp', false, false);
SetWallpaperSystem('c:\win98se\1stboot.bmp', false, true);
SetWallpaperSystem('c:\win98se\1stboot.bmp', true, false);
SetWallpaperSystem('', false, false); |
Hier ein Beispiel für ein kleines Programm mit dem man ein wenig mit dem Prozeduren experimentieren kann. Benötigt werden zwei Buttons, ein Editfeld und zwei CheckBoxen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button1Click(Sender: TObject); begin SetWallpaperSystem(Edit1.Text, CheckBox1.Checked, CheckBox2.Checked); end;
procedure TForm1.Button2Click(Sender: TObject); var s: String; c1, c2: Boolean; begin GetWallpaperSystem(s, c1, c2); Edit1.Text := s; CheckBox1.Checked := c1; CheckBox2.Checked := c2; end; |