Идёт загрузка страницы...

htp://aptem.net.ru





Как программно заменить обои на рабочем столе? I

Решение 1

Вот что я нашел в файлах помощи Ллойда (расположены на большинстве сайтов, посвященных 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 begin
W := Width;
H := Height;
end;
Y := 0;
while Y < Height do begin
X := 0;
while X < Width do begin
Canvas.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-файле для последующих сессий?

  1. добавьте inifiles в список используемых модулей.
  2. создайте inifile в текстовом редакторе как показано ниже:


        [LastUsedBitmap]
    LUBitmap= c:\mybitmap.bmp

  3. используйте примерно такую процедуру (исходим из предположения, что inifile подобно вышеупомянутому с именем c:\Bitmap.ini):


        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]