Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.05;
Скачать: CL | DM;

Вниз

Как программно изменить фон рабочего стола?   Найти похожие ветки 

 
Irinka ©   (2005-08-03 10:58) [0]

Как программно изменить фон рабочего стола? Хотелось бы взять картинку из image.


 
Eraser ©   (2005-08-03 12:10) [1]

Irinka ©   (03.08.05 10:58)

var Wallpaper : string;
begin
 Wallpaper := "C:\windows\ACD Wallpaper.bmp";
 SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, PChar(Wallpaper), SPIF_SENDCHANGE)
end;


Как установить обои в формате jpeg.
SystemParametersInfo только для bmp.

uses
 ComObj, ShlObj;

procedure ChangeActiveWallpaper;
const
 CLSID_ActiveDesktop: TGUID = "{75048700-EF1F-11D0-9888-006097DEACF9}";
var
 ActiveDesktop: IActiveDesktop;
begin
 ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
 ActiveDesktop.SetWallpaper("c:\windows\forest.jpg", 0);
 ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;


 
Irinka ©   (2005-08-03 14:21) [2]

спасибо, Eraser , но этот метод меняет картинку только на время, т.е. при перемещении окна фон остается прежним. :-(
Однако, я нашла способ действительно поменять картинку рабочего стола:

uses Registry

var
Reg: TRegIniFile;
begin

 Reg := TRegIniFile.Create("Control Panel");
Reg.WriteString("desktop", "Wallpaper", "c:\windows\Установка.jpg");
 Reg.WriteString("desktop", "TileWallpaper", "0");
 Reg.Free;
 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);

Только в этом случае возникает другой вопрос: Как немедленно перерисовать DeskTop? (Как и какое сообщение нужно послать, чтобы система знала, что необходимо обновить картинку рабочего стола?)


 
Eraser ©   (2005-08-03 14:29) [3]

Irinka ©   (03.08.05 14:21) [2]
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);


;-)

___
uses Registry

var
Reg: TRegIniFile;
begin

Reg := TRegIniFile.Create("Control Panel");
Reg.WriteString("desktop", "Wallpaper", "c:\windows\Установка.jpg");
Reg.WriteString("desktop", "TileWallpaper", "0");
Reg.Free;


++++++++++++++++

var Wallpaper : string;
begin
Wallpaper := "C:\windows\ACD Wallpaper.bmp";
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, PChar(Wallpaper), SPIF_SENDCHANGE)
end;


Думаю мысль понятна? )


 
Irinka ©   (2005-08-03 14:44) [4]

Втом-то и дело, что не обновляется картинка сразу. Хотя когда откраваешь свойства рабочего стола, нужная картинка на месте, а экран не перерисовался. Как сделать чтобы он сразу перерисовывался.


 
Eraser ©   (2005-08-03 14:51) [5]

Irinka ©   (03.08.05 14:44) [4]

Всё прекрасно обновляется, только проверил:
procedure TForm1.Button1Click(Sender: TObject);
var
 Wallpaper : string;
begin
 if OpenDialog1.Execute then
 begin
   Wallpaper := OpenDialog1.FileName;
   SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, PChar(Wallpaper), SPIF_SENDCHANGE)
 end;
end;


Прибавь сюда ещё
uses Registry

var
Reg: TRegIniFile;
begin

Reg := TRegIniFile.Create("Control Panel");
Reg.WriteString("desktop", "Wallpaper", "c:\windows\Установка.jpg");
Reg.WriteString("desktop", "TileWallpaper", "0");
Reg.Free;


 
Irinka ©   (2005-08-04 05:09) [6]

Я это делаю в windows 2000, а вы?


 
Eraser ©   (2005-08-04 13:39) [7]

Irinka ©   (04.08.05 05:09) [6]

А вы случайно не jpg файлы пытаетесь поместить на рабочий стол?
Пример работает только для bmp.


 
Irinka ©   (2005-08-04 14:37) [8]

с jpg, а нет способа сделать фоном рабочего стола jpg файл?


 
Irinka ©   (2005-08-04 14:48) [9]

А точнее любой (bmp или jpg) файл?


 
Eraser ©   (2005-08-04 15:27) [10]

Irinka ©   (04.08.05 14:37) [8]

с jpg, а нет способа сделать фоном рабочего стола jpg файл?


Для этого перед помещением картинки на раб. стол её нужно преобразовать в bmp.
см. TJPEGImage из модуля Jpeg.


 
Irinka ©   (2005-08-29 05:47) [11]

Все решила гораздо проще: оставила свой код обновления рабочего стола, затем сначала выключила, а за тем включила ActiveDesktop и у меня тут же обновилась картинка на рабочем столе :-)



Страницы: 1 вся ветка

Текущий архив: 2006.02.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
8-1124766998
palgen
2005-08-23 07:16
2006.02.05
Microsoft Video for Windows SDK


3-1133879911
Sergey_Masloff
2005-12-06 17:38
2006.02.05
NVL для NUMERIC в FireBird


4-1132310115
Stany
2005-11-18 13:35
2006.02.05
отлов MessageBox а от определ. окна


11-1118243553
Владимир Кладов
2005-06-08 19:12
2006.02.05
Смешивание звуков


15-1137350050
Андрей К
2006-01-15 21:34
2006.02.05
Подскажите аспирантуры в Москве...