![]() |
JPG als Desktop-Wallpaper?
Hey yo fellaz,
ich weiss, wir hatten dieses Thema schon 100000000 Mal. Ich würde gern den Desktop-Hintergrund programmtechnisch ändern, wobei die Methode auch JPGs annehmen können soll. SystemParametersinfo funktioniert nur mit BMPs. Ich könnte natürlich jedes JPG im Programm zu einem Bitmap konvertieren und dann die Methode aufrufen, aber gibt es nicht einen praktischeren Weg :gruebel: Thanx a lot, boyz. DANNYOBOY |
Re: JPG als Desktop-Wallpaper?
Das hängt von der Windows-Version ab. Imho können nur XP und 2003 JPGs als einfache Hintergrundbilder anzeigen, auf älteren Systemen muss der grausame Active Desktop dafür aktiviert werden :?
...:cat:... |
Re: JPG als Desktop-Wallpaper?
Ich meine das funktioniert so:
Delphi-Quellcode:
Nur bin ich mir gerade nicht sicher, ob das JPEG's unterstützt, glaube aber schon.
function ChangeWallpaper_AD(aFile: String): Boolean;
const CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}'; var hObj: IUnknown; ADesktop: IActiveDesktop; str: string; wstr: PWideChar; begin hObj := CreateComObject(CLSID_ActiveDesktop); ADesktop := hObj as IActiveDesktop; wstr := AllocMem(MAX_PATH); try StringToWideChar(aFile, wstr, MAX_PATH); ADesktop.SetWallpaper(wstr, 0); ADesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE); finally FreeMem(wstr); end; end; |
Re: JPG als Desktop-Wallpaper?
Yo,
ich habe XP Prof drauf. @Alexander: Geht das nicht ohne ActiveDesktop :gruebel: |
Re: JPG als Desktop-Wallpaper?
Zitat:
Wird imho kein Weg dran vorbei führen. Zwecks Konvertierung von Bildern kannst dir ja mal die ImageFileLib von dieser Seite angucken: ![]() |
Re: JPG als Desktop-Wallpaper?
Ich weiß jetzt nicht in wie fern, das mit JPEG's klappt, aber ich meine nicht:
Delphi-Quellcode:
Aber was hast du gegen den Active Desktop, ich habe ihn bei XP einfach angelassen... Sonst muss du wirklich das Bild als platzverschwendenes BMP konvertieren...
function ChangeWallpaper(aFile: String): Boolean;
begin SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer(afile), SPIF_SENDWININICHANGE); end; |
Re: JPG als Desktop-Wallpaper?
Der Active Desctop schmiert aber ab und zu ab, das is ziemlich beschissen.
|
Re: JPG als Desktop-Wallpaper?
Ist mir noch nicht passiert ;-)
|
Re: JPG als Desktop-Wallpaper?
mir isser auch schon abgekackt ^^
|
Re: JPG als Desktop-Wallpaper?
@supermuckl:
:warn: Überdenke bitte Deine Wortwahl. In letzter Zeit widerspricht diese immer öfters den Regeln des angenehmen Umgangs mit- und untereinander. ...:cat:... |
Re: JPG als Desktop-Wallpaper?
Zitat:
Ich gehe auch den Weg über BMP, da ich zu Hause noch Win2k habe (wenn ich mich von zu Hause in der Firma anmelde würde ja sonst der Active Desktop aktiviert werden ;) ) |
Re: JPG als Desktop-Wallpaper?
Ja, das ist schon klar, ich meinte jetzt auch eher auf der Festplatte...
Aber das ist ja bei den heutigen Festplatte nicht mehr so das Problem... |
Re: JPG als Desktop-Wallpaper?
Also, in meinem Windows XP werden die Hintergrundbilder von JPEG in Bitmap konvertiert und im Ordner X:\Dokumente und Einstellungen\User\Lokale Einstellungen\Anwendungsdateien\Microsoft gespeichert! :zwinker:
|
Re: JPG als Desktop-Wallpaper?
Also Fellaz,
ich habe nun die in Delphi involvierte JPEG-Klasse verwendet und habe die JPEG-Datei geladen und speichere sie dann als Bitmap ab, um diese dann mittels Funktion SystemParametersInfo als Wallpaper anzunehmen. Das Wallpaper wird anstandslos übernommen und die Funktion liefert den Wert <true> zurück. Sobald man den Desktop aktualisiert, wird das Wallpaper scheinbar vom Desktop gelöscht und der Desktop wird schwarz. Bei einem evtl. Neustart ist das Wallpaper ebenfalls nicht mehr vorhanden. Hilfe. :wall: :wall: Was nun??? :gruebel: |
Re: JPG als Desktop-Wallpaper?
Zitat:
probiers mal damit:
Code:
FileName:
Function SetWallpaper(FileName: String; Style: Integer): Boolean;
Var reg: TRegistry; wp: Array[0..$FF] Of Char; Begin reg := TRegistry.Create; Try reg.RootKey := HKEY_CURRENT_USER; If reg.OpenKey('\Control Panel\desktop\', True) Then Begin If (Style = 1) Then reg.WriteString('TileWallpaper', '1') Else reg.WriteString('TileWallpaper', '0'); reg.WriteString('WallpaperStyle', IntToStr(Style)); End; Finally reg.Free; End; StrPCopy(wp, FileName); Result := SystemParametersInfo(spi_SetDeskWallpaper, 0, @wp, spif_UpdateIniFile); End; Path und Dateiname des Wallpapers im BMP-Format Style: 0 - Zentriert 1 - Nebeneinander 2 - Gestreckt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz