Вот что я нашел в файлах помощи Ллойда (расположены на большинстве сайтов, посвященных Delphi). Я не пробовал это, но уже имею несколько положительных откликов. Сообщите мне, как это работает у вас.
unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs; type TForm1 = class(TForm)procedure FormCreate(Sender: TObject);procedure FormPaint(Sender: TObject);private{ Private declarations }public{ Public declarations }end; var Form1: TForm1;Bitmap: TBitmap; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Bitmap := TBitmap.Create;Bitmap.LoadFromFile('C:\WINDOWS\cars.BMP');end; procedure TForm1.FormPaint(Sender: TObject); var X, Y, W, H: LongInt;begin with Bitmap do beginW := Width;H := Height;end;Y := 0;while Y < Height do beginX := 0;while X < Width do beginCanvas.Draw(X, Y, Bitmap);Inc(X, W);end;Inc(Y, H);end;end; end. |
Решение 1
Кто-нибудь знает как можно во время выполнения программы заменить обои рабочего стола на определенное изображение?
|
procedure ChangeWallpaper(bitmap: string); {имя файла с изображением: *.bmp} var pBitmap : pchar; begin bitmap:=bitmap+#0;pBitmap:=@bitmap[1];SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pBitmap, SPIF_UPDATEINIFILE);end; |
Можно ли сохранить сделанные изменения в INI-файле для последующих сессий?
[LastUsedBitmap] LUBitmap= c:\mybitmap.bmp |
procedure WriteToIniFile(bitmap : string); var MyIniFile : TInifile; begin MyIniFile := Tinifile.Create( 'c:\Bitmap.ini' );MyIniFile.WriteString( 'LastUsedBitmap', 'LUBitmap', bitmap);MyIniFile.Free;end; procedure ReadFromIniFile(var bitmap: string); var MyIniFile : TInifile; begin MyIniFile := Tinifile.Create( 'c:\Bitmap.ini' );bitmap:= MyIniFile.ReadString('LastUsedBitmap', 'LUBitmap');MyIniFile.Free;end; |
[000279]
SystemParametersInfo(spi_SetDeskWallPaper,0,Addr(BmpFileName),spif_UpdateIniFile + spif_SendWinIniChange); |
где BmpFileName - PChar, содержащий имя файла с изображением. Обратите внимание на четвертый параметр, spif_UpdateIniFile. Он записывает изменения в Win.ini. Параметр spif_SendWinIniChange посылает всем окнам сообщение о факте изменения Win.ini. [000453]