Как сменить обои на рабочем столе?
uses
..., Registry;
procedure ChangeWallpaper( WallPath: string );
var
Reg: TRegistry;
begin
with TRegistry.Create do
begin
RootKey := HKEY_CURRENT_USER;
OpenKey( 'Control Panel\Desktop', false );
WriteString( 'Wallpaper', WallPath );
CloseKey;
Free;
end;
SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE );
end;
|
Более универсальный вариант
uses
..., Registry, ShlObj, ComObj;
procedure ChangeWallpaper( WallPath: string );
var
Reg: TRegistry;
ActiveDesktop: IActiveDesktop;
begin
with TRegistry.Create do
begin
RootKey := HKEY_CURRENT_USER;
OpenKey( 'Control Panel\Desktop', false );
WriteString( 'Wallpaper', WallPath );
CloseKey;
Free;
end;
SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE );
ActiveDesktop := CreateComObject( CLSID_ActiveDesktop ) as IActiveDesktop;
ActiveDesktop.ApplyChanges( AD_APPLY_ALL or AD_APPLY_FORCE );
end; |