Текущий архив: 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