Go Back   Wiki NewForum | Latest Entertainment News > Career Forum & Tips > Tech Forum & Tutorial > Oracle Database, SQL, Application, Programming


Setting Windows wallpaper revisited (with new tricks!)


Reply
Views: 1346  
Thread Tools Rate Thread
  #1  
Old 08-11-2010, 02:29 PM
bholas bholas is offline
Award Winner
 
Join Date: Apr 2010
Posts: 4,977
Default Setting Windows wallpaper revisited (with new tricks!)

We demonstrated how to set Windows' wallpaper from your application using our previously featured SetWallpaper() function. Since then we've improved it to support setting the exact position of the wallpaper and the ability to resize the wallpaper to fit the screen.

uses
Registry, WinProcs, SysUtils;

const
// WallPaperStyles
WPS_Tile = 0;
WPS_Center = 1;
WPS_SizeToFit = 2;
WPS_XY = 3;

//
// sWallpaperBMPPath
// - path to a BMP file
//
// nStyle
// - any of the above WallPaperStyles
//
// nX, nY
// - if the nStyle is set to WPS_XY,
// nX and nY can be used to set the
// exact position of the wall paper
//
procedure SetWallpaperExt(
sWallpaperBMPPath : string;
nStyle,
nX, nY : integer );
var
reg : TRegIniFile;
s1 : string;
X, Y : integer;
begin
//
// change registry
//
// HKEY_CURRENT_USER\
// Control Panel\Desktop
// TileWallpaper (REG_SZ)
// Wallpaper (REG_SZ)
// WallpaperStyle (REG_SZ)
// WallpaperOriginX (REG_SZ)
// WallpaperOriginY (REG_SZ)
//
reg := TRegIniFile.Create(
'Control Panel\Desktop' );

with reg do
begin
s1 := '0';
X := 0;
Y := 0;

case nStyle of
WPS_Tile : s1 := '1';
WPS_Center: nStyle := WPS_Tile;
WPS_XY :
begin
nStyle := WPS_Tile;
X := nX;
Y := nY;
end;
end;

WriteString( '',
'Wallpaper',
sWallpaperBMPPath );

WriteString( '',
'TileWallpaper',
s1 );

WriteString( '',
'WallpaperStyle',
IntToStr( nStyle ) );

WriteString( '',
'WallpaperOriginX',
IntToStr( X ) );

WriteString( '',
'WallpaperOriginY',
IntToStr( Y ) );
end;
reg.Free;

//
// let everyone know that we
// changed a system parameter
//
SystemParametersInfo(
SPI_SETDESKWALLPAPER,
0,
Nil,
SPIF_SENDWININICHANGE );
end;
Here are two examples on how to call the above SetWallpaperExt() function.


// set wallpaper to winnt.bmp and
// stretch it to fit the screen
SetWallpaperExt(
'c:\winnt\winnt.bmp',
WPS_SizeToFit, 0, 0 );

// set the wallpaper origin
// to (10, 200)
SetWallpaperExt(
'c:\winnt\winnt.bmp',
WPS_XY, 10, 200 );

Reply With Quote
Reply

Tags
programming tips

New topics in Oracle Database, SQL, Application, Programming





Powered by vBulletin® Version 3.8.10
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
WikiNewForum)