Советы по Delphi

         

Как программно заменить обои на рабочем столе? 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

  • используйте примерно такую процедуру (исходим из предположения, что 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]



    Содержание раздела