Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Desktop Hintergrund manipulieren (https://www.delphipraxis.net/7977-desktop-hintergrund-manipulieren.html)

neolithos 26. Aug 2003 07:35


Desktop Hintergrund manipulieren
 
In welchem Windows-Fenster wird das Desktop-Hintergrundbild gezeichnet?

Welche Nachricht verwendet dieses Fenster um das Hintergrundbild zu zeichnen?

Illuminator-23-5 26. Aug 2003 07:58

Re: Desktop Hintergrund manipulieren
 
Über dem Windows-Desktop liegt eine ListView-Komponente. Du benötigst also einfach ein Handle auf diese ListView:
Delphi-Quellcode:
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;
so kriegst du das handle, auf dem der Desktop gezeichnet wird.
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:
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;
Ich hoffe, Es is was dabei, das dir weiterhilft!

neolithos 26. Aug 2003 08:21

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 19:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz