바탕화면이 바뀌는 걸 해보려고 하는데 처음에는 바뀌다가 그 다음부터는 바뀌질 않습니다.
혹시 아시는 분들 부탁합니다.
수고하세요.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,registry;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure ChangeWallPaper(FileName:String; Tile:Boolean);
var
Reg : TRegIniFile;
begin
Reg:= TRegIniFile.Create('Control Panel');
Reg.WriteString('Desktop', 'Wallpaper',
'c:Windows11.bmp');
if Tile then Reg.WriteString('Desktop', 'TileWallpaper',
'1')
Else Reg.WriteString('Desktop', 'TileWallpaper', '0');
Reg.Free;
SystemParametersInfo(SPI_SETDESKWALLPAPER,0, Nil,
SPIF_SENDWININICHANGE);
end;
procedure SetWallPaper(FileName:String);
begin
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
PChar(FileName), 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetWallPaper('c:windows11.bmp');
end;
> 바탕화면이 바뀌는 걸 해보려고 하는데 처음에는 바뀌다가 그 다음부터는 바뀌질 않습니다.
조헌철님 반갑습니다.
cafe.daum.net 초보델파이에 가입하셨더군요! 하여간 반갑습니다.
이 방법으로 해보셔요.. 이게 잘 되더군요.
uses
Registry, WinProcs, SysUtils;
const
WPS_Tile = 0; //바둑식 배열
WPS_Center = 1; //가운데
WPS_SizeToFit = 2; //늘리기
WPS_XY = 3; //x, y위치에 그리기
procedure SetWallpaperExt(sWallpaperBMPPath : string; nStyle, nX, nY :
integer );
var
reg : TRegIniFile;
s1 : string;
X, Y : integer;
begin
reg := TRegIniFile.Create('Control PanelDesktop' );
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;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nil, SPIF_SENDWININICHANGE );
end;
사용예)
//사이즈 늘려서 그리기
SetWallpaperExt('c:winntwinnt.bmp', WPS_SizeToFit, 0, 0 );
//10, 200에 그리기
SetWallpaperExt('c:winntwinnt.bmp',WPS_XY, 10, 200 );
그럼 행복하셔요.. 규춘올림.
> 혹시 아시는 분들 부탁합니다.
> 수고하세요.
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls,registry;
>
> type
> TForm1 = class(TForm)
> Button1: TButton;
> procedure Button1Click(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
>
> implementation
>
> {$R *.DFM}
> procedure ChangeWallPaper(FileName:String; Tile:Boolean);
> var
> Reg : TRegIniFile;
> begin
> Reg:= TRegIniFile.Create('Control Panel');
> Reg.WriteString('Desktop', 'Wallpaper',
> 'c:Windows11.bmp');
> if Tile then Reg.WriteString('Desktop', 'TileWallpaper',
> '1')
> Else Reg.WriteString('Desktop', 'TileWallpaper', '0');
> Reg.Free;
> SystemParametersInfo(SPI_SETDESKWALLPAPER,0, Nil,
> SPIF_SENDWININICHANGE);
> end;
>
>
> procedure SetWallPaper(FileName:String);
> begin
> SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
> PChar(FileName), 0);
> end;
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> SetWallPaper('c:windows11.bmp');
> end;
>