Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

смена фона рабочего стола [D5, D6, Win95/98, Win2k]


Virus ©   (2003-09-09 11:00:00) 

Меняю фон(картинку) на рабочем столе вот этой процедурой:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,PChar("имя файл"),
SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE );

Если файл bmp-шный, то при вызове этой строки На рабочем столе сразу меняется картинка. А вот если JPEG, То С виду ничего не происходит, хотя если посмотреть в реестре, то там уже картинка сменена. т.е. если комп перегрузить, то появится на раб. столе уже новая.


ZEE   (2003-09-09 12:15:00) [1]

var
bmp:TBitMap;
jpg: TJpegImage;
...
bmp:=TBitMap.Create;
jpg:=TJpegImage.Create;
jpg.LoadFromFile("...");
bmp.Width:=jpg.Width;
bmp.Height:=jpg.Height;
bmp.Canvas.Draw(0,0,jpg);
bmp.SaveToFile("...");
jpg.Free;
bmp.Free;


Virus   (2003-09-09 11:57:00) [2]

>>или если с BMP - все ОК, то можно преобразовать в Битмап, ну и дальше понятно...
Этот вариант я тоже просматривал. Он мне даже больше нравится. Но проблема в том, как преобразовать в битмап.


ZEE   (2003-09-09 11:20:00) [3]

как вариант - можно после этого обновить рабочий стол
например так:
ShellExecute(Application.Handle,
Pchar("Open"),Pchar("C:\Winsdows\Rundll32.exe"),
Pchar("user,repaintscreen"),
Pchar("C:\Winsdows\"),SW_SHOWNORMAL);
или если с BMP - все ОК, то можно преобразовать в Битмап, ну и дальше понятно...


Наверх

Титульная страница Поиск, карта сайта Написать письмо