You may have noticed that using SystemParametersInfo to change the wallpaper when ActiveDesktop is turned on doesn't work. The reason is because you need to use the IActiveDesktop COM interface. Using SystemParametersInfo still works, but it doesn't update the wallpaper.
Note that the IActiveDesktop interface requires a Shell32.dll version >= 4.71. The document titled "Get a File Version" demonstrates how to check the file version and uses the shell32.dll as an example.
Here is an example of using IActiveDesktop to work with
the wallpaper. It assumes that you have 3 labels on a form
and two buttons with the default names.
uses
ComObj, // For CreateComObject and Initialization/Finalization of COM
ShlObj; // For IActiveDesktop
{ The CLASS ID for ActiveDesktop is not defined in ShlObj, while the IID is so we define it here. }
const
CLSID_ActiveDesktop : TGUID = '{75048700-EF1F11D0-9888-06097DEACF9}';
{ Demonstrate getting the Wallpaper }
procedure TForm1.Button1Click(Sender: TObject);
var
ActiveDesktop : IActiveDesktop;
CurrentWallpaper : string;
CurrentPattern : string;
WallpaperOptions : TWallpaperOpt;
TmpBuffer : PWideChar;
begin
// Create the ActiveDesktop COM Object
ActiveDesktop:=CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
// We now need to allocate some memory to get the current Wallpaper.
// However, tmpBuffer is a PWideChar which means 2 bytes make
// up one Char. In order to compenstate for the WideChar, we
// allocate enough memory for MAX_PATH*2
tmpBuffer := AllocMem(MAX_PATH*2);
try
ActiveDesktop.GetWallpaper(tmpBuffer, MAX_PATH*2, 0);
CurrentWallpaper := tmpBuffer;
finally
FreeMem(tmpBuffer);
end;
if CurrentWallpaper <> '' then
Label1.Caption := 'Current Wallpaper: ' + CurrentWallpaper
else
Label1.Caption := 'No Wallpaper set';
// Now get the current Wallpaper options.
// The second parameter is reserved and must be 0.
WallpaperOptions.dwSize := SizeOf(WallpaperOptions);
ActiveDesktop.GetWallpaperOptions(WallpaperOptions, 0);
case WallpaperOptions.dwStyle of
WPSTYLE_CENTER : Label2.Caption := 'Centered';
WPSTYLE_TILE : Label2.Caption := 'Tiled';
WPSTYLE_STRETCH : Label2.Caption := 'Stretched';
WPSTYLE_MAX : Label2.Caption := 'Maxed';
end;
{Now get the desktop pattern. The pattern is a string of decimals whose bit pattern represents a picture. Each decimal represents the on/off state of the 8 pixels in that row. }
tmpBuffer := AllocMem(256);
try
ActiveDesktop.GetPattern(tmpBuffer, 256, 0);
CurrentPattern := tmpBuffer;
finally
FreeMem(tmpBuffer);
end;
if CurrentPattern <> '' then
Label3.Caption := CurrentPattern
else
Label3.Caption := 'No Pattern set';
end;
{ Demonstrate setting the wallpaper }
procedure TForm1.Button2Click(Sender: TObject);
var
ActiveDesktop: IActiveDesktop;
begin
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
ActiveDesktop.SetWallpaper('c:\downloads\images\test.bmp', 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
Responds:
Good programming. But I just calling
SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, @WallpaperBMPFileAndPath[1], 3);
Subscribe to:
Post Comments (Atom)
most likely, you have also heard about the way of sql mdf file repair
air max, burberry outlet, true religion jeans, louboutin, louis vuitton outlet, louboutin, ray ban sunglasses, tiffany and co, coach outlet store online, oakley sunglasses cheap, christian louboutin shoes, longchamp outlet, louis vuitton, true religion jeans, tory burch outlet, kate spade outlet, kate spade handbags, oakley sunglasses, jordan shoes, polo ralph lauren outlet, louis vuitton outlet, louis vuitton handbags, coach outlet, prada outlet, ray ban sunglasses, chanel handbags, michael kors outlet, longchamp handbags, michael kors outlet, oakley sunglasses, nike shoes, air max, coach purses, michael kors outlet, longchamp handbags, louis vuitton outlet stores, nike free, prada handbags, coach factory outlet, gucci outlet, tiffany and co, louboutin outlet, michael kors outlet, polo ralph lauren outlet, michael kors outlet, burberry outlet, michael kors outlet
marc jacobs, soccer shoes, abercrombie and fitch, hollister, asics running shoes, canada goose, ugg boots, nfl jerseys, reebok outlet, herve leger, ugg, north face outlet, mont blanc, longchamp, insanity workout, canada goose uk, chi flat iron, babyliss pro, ugg pas cher, ugg australia, canada goose jackets, mcm handbags, canada goose, wedding dresses, new balance shoes, mac cosmetics, soccer jerseys, celine handbags, birkin bag, p90x, ferragamo shoes, valentino shoes, nike huarache, beats by dre, ghd, instyler, jimmy choo outlet, lululemon outlet, bottega veneta, canada goose, rolex watches, canada goose outlet, vans shoes, nike roshe run, moncler, ugg boots, north face jackets, uggs outlet, giuseppe zanotti
louboutin, moncler outlet, juicy couture outlet, iphone 6 cases, hollister, moncler, karen millen, oakley, baseball bats, wedding dresses, ray ban, gucci, canada goose, ralph lauren, canada goose, swarovski crystal, hollister clothing store, moncler, air max, converse, pandora jewelry, juicy couture outlet, rolex watches, moncler, supra shoes, moncler, pandora charms, ugg, vans, toms shoes, links of london, pandora charms, air max, timberland boots, parajumpers, hollister, thomas sabo, louis vuitton, montre homme, coach outlet store online, lancel, ugg, swarovski, moncler, converse shoes