Главная страница
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.031 c
8-1125124794
Пантелеев Иван
2005-08-27 10:39
2006.02.05
Контроль сигнала микрофона


11-1118388635
Lars
2005-06-10 11:30
2006.02.05
stuffstring


2-1137480519
СержК
2006-01-17 09:48
2006.02.05
Как узнать - сколько строк в текстовом файле?


2-1137756519
Змей
2006-01-20 14:28
2006.02.05
*.gif в systray


1-1135900399
Gorger
2005-12-30 02:53
2006.02.05
Существует ли к Дельфи 6 библиотека для формирования PDF?