C++ Builder Snippets  

Windows-Hintergrundbild ändern:
 
Mit Hilfe folgender Funktion kann das Hintergrundbild von Windows-Desktop geändert werden. Parallel dazu können Sie bestimmen, ob das Bild zentriert, gekachelt oder auf die Bildschirmgröße skaliert dargestellt wird und ob die Änderungen gespeichert werden sollen:


//---------------------------------------------------------------------------
//  Ändern des Hintergrundbildes von Windows-Desktop
//---------------------------------------------------------------------------
//  Parameter:
//  slWpBitmap:  Name der Bitmap-Datei als String, Leerstring für kein Bitmap,
//               "CURRENT" um aktuelles Bitmap beizubehalten.
//  blTile:      True für gekachelte Darstellung, false zum Zentrieren
//  blStretch:   bei true wird das Bild auf die Bildschirmgrösse skaliert
//  blPermanent: bei true werden die Änderungen abgespeichert, false bewirkt
//               eine temporäre Änderung (bis zur nächsten Anmeldung)
//---------------------------------------------------------------------------

#include <registry.hpp>
void SetWallPaper(AnsiString slWpBitmap, bool blTile,
                  bool blStretch, bool blPermanent)
{
  TRegistry *pReg = NULL;
  AnsiString slCurrentWpFile, slCurrentTile, slCurrentStretch;

  try
  {
    pReg = new TRegistry();
    pReg->RootKey = HKEY_CURRENT_USER;
    pReg->OpenKey("Control Panel\\Desktop", true);

    if(pReg->ValueExists("Wallpaper"))
      slCurrentWpFile  = pReg->ReadString("Wallpaper");
    if(pReg->ValueExists("TileWallpaper"))
      slCurrentTile    = pReg->ReadString("TileWallpaper");
    if(pReg->ValueExists("WallpaperStyle"))
      slCurrentStretch = pReg->ReadString("WallpaperStyle");

    if (slWpBitmap.UpperCase() == "CURRENT") slWpBitmap = slCurrentWpFile;
    else if(!FileExists(slWpBitmap)) slWpBitmap = EmptyStr;

    pReg->WriteString("TileWallpaper", blTile ? "1" : "0");
    pReg->WriteString("WallpaperStyle", blStretch ? "2" : "0");

    SystemParametersInfo(SPI_SETDESKWALLPAPER,0, slWpBitmap.c_str(),
      SPIF_SENDWININICHANGE);

    if(blPermanent) pReg->WriteString("Wallpaper", slWpBitmap);
    else
    {
      pReg->WriteString("TileWallpaper", slCurrentTile);
      pReg->WriteString("WallpaperStyle", slCurrentStretch);
    }
    if(pReg != NULL) delete pReg;
  }
  catch(...) { ; }
}

  Download BCB4
Projekt-Quellcode
Download
Demo-Exe

© '99-2000 by S. Kreutzmann