![]() |
Desktop Hintergrund manipulieren
In welchem Windows-Fenster wird das Desktop-Hintergrundbild gezeichnet?
Welche Nachricht verwendet dieses Fenster um das Hintergrundbild zu zeichnen? |
Re: Desktop Hintergrund manipulieren
Über dem Windows-Desktop liegt eine ListView-Komponente. Du benötigst also einfach ein Handle auf diese ListView:
Delphi-Quellcode:
so kriegst du das handle, auf dem der Desktop gezeichnet wird.
function GetDesktopListViewHandle: THandle;
var S: String; begin Result := FindWindow('ProgMan', nil); Result := GetWindow(Result, GW_CHILD); Result := GetWindow(Result, GW_CHILD); SetLength(S, 40); GetClassName(Result, PChar(S), 39); if PChar(S)<>'SysListView32' then Result := 0; end; Welche nachricht verwendet wird, um das hintergrundbild zu zeichnen, weiß ich nicht. Wenn du aber das hintergrundbild änern willst, dürfte folgendes gehen:
Delphi-Quellcode:
Ich hoffe, Es is was dabei, das dir weiterhilft!
procedure SetWallpaper(sWallpaperBMPPath: String; bTile : boolean);
begin if not SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer(sWallpaperBMPPath), SPIF_SENDWININICHANGE) then ShowMessage('Konnte Datei '+sWallpaperBMPPath+#13+' nicht als Desktop-Hintergrund setzen!'); end; |
Re: Desktop Hintergrund manipulieren
Das Problem bei dem SysListView32 und Progman ist leider nur, dass wenn ich den Explorer beende das Bild immer noch gezeigt wird, obwohl diese Fenster nicht mehr existieren.
Nun gut ich könnte das orginal Bild überzeichnen, was schon Funktioniert. Ist aber nicht schön! Da immer zuerst das Original gezeichnet wird, und dann erst meine Graphic, welche kein Bild! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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