Устанавливаем свой WallPaper для Windows
Устанавливаем свой WallPaper для Windows
Устанавливаем свой WallPaper для Windows В этой статье мы рассмотрим вопрос о том, как средствами delphi можно поменять обои на рабочем столе. Информацию о картинке, которая находится на рабочем столе, конечно же, можно найти в реестре! Она находится в ключе hkey_current_user, а добраться до нее можно по такому пути: hkey_current_usercontrol paneldesktop А параметр, содержащий название картинки, носит имя 'wallpaper'. То есть для того, чтобы сменить обои нам надо изменить значение параметра 'wallpaper' и оповестить систему о том, что мы внесли изменения в реестр. Итак, приступим, для работы нам понадобятся два дополнительных модуля: registry.pas и winprocs.pas, которые надо обязательно подключить в раздел uses Вашей программы. Нам потребуется всего одна кнопка, по нажатию на которую у нас будут меняться обои на Рабочем столе. Для наглядности привожу полный код приложения, которое получилось у меня: unit unit1; interface uses windows, messages, sysutils, classes, graphics, controls, forms, dialogs, registry, winprocs, stdctrls; type tform1 = class(tform) button1: tbutton; procedure button1click(sender: tobject); private { private declarations } public { public declarations } end; var form1: tform1; implementation {$r *.dfm} procedure setwallpaper(swallpaperbmppath : string; btile : boolean ); var reg : treginifile; begin // Изменяем ключи реестра // hkey_current_user // control paneldesktop // tilewallpaper (reg_sz) // wallpaper (reg_sz) reg := treginifile.create('control paneldesktop' ); with reg do begin writestring( '', 'wallpaper', swallpaperbmppath ); if( btile )then begin writestring('', 'tilewallpaper', '1' ); end else begin writestring('', 'tilewallpaper', '0' ); end; end; reg.free; // Оповещаем всех о том, что мы // изменили системные настройки systemparametersinfo(spi_setdeskwallpaper, 0, nil, spif_sendwininichange ); end; procedure tform1.button1click(sender: tobject); begin setwallpaper('c:windows1stboot.bmp', false ); end; end. Но надо помнить что этот код будет действовать только при отключенном activedesctop. Если же он у Вас включен или Вы хотите установить на Рабочий Стол картинку в формате .jpg или .gif, то Вам потребуется использовать код, приведенный ниже 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:windowsforest.bmp',0); activedesktop.applychanges(ad_apply_all or ad_apply_force); end; Ну вот вроде бы и все, используйте на здоровье!.. (С) Автор статьи: Михаил Христосенко development и Дельфи ( http://delphid.dax.ru )