Autor |
Beitrag |
patmann2001
      
Beiträge: 201
Windows 7 Prof.
Delphi XE2
|
Verfasst: Di 15.10.02 18:27
Ich verwende eine Function
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function bild_wechsel(dateiname:STRING):BOOLEAN; BEGIN if NOT SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer (dateiname), SPIF_SENDWININICHANGE) then begin Result:=false; end ELSE BEGIN Result := true; END; end; |
Damit ändere ich das Hintergrundbild. Leider wird der Name des Bildes nicht in der Liste sichtbar, die man bekommt wenn man die Eigenschaften des Desktops aufruft. Auch kann ich es leider dort nicht Kacheln oder Strecken.
Wie komme ich da ran und wie schreibe ich diese Daten in die Eigenschaften?
cu Patmann
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Di 15.10.02 18:49
Hier einige Prozeduren die ich mal geschrieben habe:
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: 35: 36: 37: 38: 39: 40:
| {Ermittelt Pfad des Hintergrundbildes und die Anzeigeart. } procedure GetWallpaperSystem(var sWallpaper: String; var bTile, bStrech: Boolean); var Reg : TRegIniFile; sTemp: String; begin Reg := TRegIniFile.Create('Control Panel\Desktop'); with Reg do begin sWallpaper := ReadString('', 'Wallpaper', ''); sTemp := ReadString('', 'TileWallpaper', '0'); if sTemp = '1' then bTile := True else bTile := False; sTemp := ReadString('', 'WallpaperStyle', '0'); if sTemp = '2' then bStrech := True else bStrech := False; end; Reg.Free; end;
{Wechselt das Hintergrundbild und Anzeigeart} procedure SetWallpaperSystem(sWallpaper: String; bTile, bStrech: Boolean); var Reg : TRegIniFile; begin Reg := TRegIniFile.Create('Control Panel\Desktop'); with Reg do begin WriteString('', 'Wallpaper', sWallpaper);
if bTile then WriteString('', 'TileWallpaper', '1') else WriteString('', 'TileWallpaper', '0'); if bStrech then WriteString('', 'WallpaperStyle', '2') else WriteString('', 'WallpaperStyle', '0'); end; Reg.Free;
//Aktualisiert das Hintergrundbild SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);
Application.ProcessMessages; end; |
/EDIT
Sehe gerade, daß die die Objekte nicht durch try..finally geschützt sind. Kann hier zwar nichts passieren, aber bevor das einer bemängelt mach ich das lieber 
|
|
patmann2001 
      
Beiträge: 201
Windows 7 Prof.
Delphi XE2
|
Verfasst: Di 15.10.02 18:56
Danke
Das Hilft weiter
cu Patmann
|
|
patmann2001 
      
Beiträge: 201
Windows 7 Prof.
Delphi XE2
|
Verfasst: Di 15.10.02 19:51
Mist geht doch nicht
Wenn ich ein Bild habe, das gekachelt war und dann ein Bild haben möchte, das Zentiert ist, dann geht das nicht.
Es bleibt gekachelt.
Ich habe Win2000.
Was mache ich falsch.
Ansonsten geht alles.
Kann man die Registry vieleicht neu starten oder so?
cu Patmann
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Di 15.10.02 20:52
Die Prozeduren hab ich schon seit Monaten bei einem Programm im Gebrauch und sie funktioneren. Allerdings hab ich bis jetzt nur mit 9x getestet. Es könnte auch sein, daß du mit den Boolean's falsch umgehst:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| //Bild zentrieren SetWallpaperSystem('c:\windows\1stboot.bmp', false, false);
//Bild zentrieren und strecken SetWallpaperSystem('c:\windows\1stboot.bmp', false, true);
//Bild kachen SetWallpaperSystem('c:\windows\1stboot.bmp', true, false); |
Wäre schön wen jemand anders das unter anderen Windows Versionen testen könnte. Es kann sein, daß sich die Bedeutung der Schlüssel geänder hat.
|
|
patmann2001 
      
Beiträge: 201
Windows 7 Prof.
Delphi XE2
|
Verfasst: Mi 16.10.02 05:30
Hi
Ich hatte schon verstanden wie das geht, doch nachdem ich jetzt auch mal Strecken ausprobiert habe, bemerke ich, das es leider damit auch nicht geht. Das einzigste was sicher klappt ist kacheln.
Vieleicht weiss jemand anderes Rat.
cu Patmann
|
|
patmann2001 
      
Beiträge: 201
Windows 7 Prof.
Delphi XE2
|
Verfasst: Mi 16.10.02 05:38
Grrrr
Ich habe da was nicht richtig übernommen.
Natürlich funktioniert Deine Procedure auch unter 2000.
Alles Klar und Danke nochmal
cu Patmann
|
|
Chatfix
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: Sa 09.11.02 23:06
also ich nutze die procedure zum wecheln auch, aber unter xp kommt dann lediglich die eingestellte hintergrundfarbe..
wenn ich nun auf eigenschaften gehe hat er das wallpaper, ich denke mal der nimmts auf aber aktualisiert den desktop irgendwie nicht..
geht auch nicht wenn ich den desktop aktualisier (F5)
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
Chatfix
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: So 10.11.02 14:27
ok funzt doch... man muss nur ein BMP und kein JPG nehmen... vllt könntest du in deinem FAQ noch mit einnehmen das man ggf jpegs in bmps umwandeln muss....
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:
| procedure BMPtoJPG(FileName :String); var BMP : TBitmap; JPG : TJpegImage; begin BMP := TBitmap.Create; JPG := TJpegImage.Create; BMP.LoadFromFile(FileName); JPG.Assign(BMP.Picture.Bitmap); // Hier könnt ihr noch die Eigenschaften ändern JPG.SaveToFile(ChangeFileExt(Filename,'.jpg')); JPG.Free; BMP.Free; end;
procedure JPEGtoBMP(FileName : string); var jpeg : TJPEGImage; bmp : TBitmap; begin jpeg:= TJPEGImage.Create; try jpeg.LoadFromFile(FileName ); jpeg.CompressionQuality := 100; {Normaler Wert, kann weggelassen werden} bmp:= TBitmap.Create; try bmp.Assign(jpeg); bmp.SaveTofile(ChangeFileExt(Filename,'.bmp')); finally bmp.free end; finally jpeg.free end; end; |
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
|