Autor Beitrag
patmann2001
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Di 15.10.02 18:27 
Ich verwende eine Function
ausblenden 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



BeitragVerfasst: Di 15.10.02 18:49 
Hier einige Prozeduren die ich mal geschrieben habe:

ausblenden volle Höhe Quelltext
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Di 15.10.02 18:56 
Danke 8)
Das Hilft weiter
cu Patmann
patmann2001 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: 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



BeitragVerfasst: 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Mi 16.10.02 05:38 
Grrrr :oops:
Ich habe da was nicht richtig übernommen. :oops:
Natürlich funktioniert Deine Procedure auch unter 2000.
Alles Klar und Danke nochmal 8)

cu Patmann
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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
BeitragVerfasst: 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....

ausblenden volle Höhe Quelltext
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