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

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

Как программно сменить фоновый рисунок рабочего стола? [D6, Win95/98, WinME, NT4, Win2k, WinXP]


rts111 ©   (2005-02-09 22:09:00) 

Я сделал изменения в registry:

procedure TForm1.Button1Click(Sender: TObject);
var
a:TRegistry;
begin
a:=TRegistry.Create;
a.OpenKey('\Control Panel\Desktop',false);
a.WriteString('Wallpaper','c:\myPic.bmp');
a.WriteString('WallpaperStyle','0');
a.Free;
... ??? ...
end;

Что нужно сделать,
что-бы новая картинка появилась на рабочем столе(без перезагрузки)?


КаПиБаРа   (2005-02-10 12:37:00) [1]

program ChWpp;

uses
 ShlObj, ComObj, ActiveX, Windows;
{$R *.res}

const
 CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';

var
 path: widestring;
 ActiveDesktop: IActiveDesktop;
 f: textfile;

begin
 path := 'E:\desktop\640x480\1024x768\NEW!\wallpaper_12.jpg';
 if path <> '' then
   try
     CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
     ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
     ActiveDesktop.SetWallpaper(PWideChar(path), 0);
     ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
   finally
     CoUninitialize;
   end;

end.


rts1111   (2005-02-10 12:27:00) [2]

???


iskatel   (2005-02-10 00:24:00) [3]

десктоп обновить наверное, а вообще вроде есть сообщение, которое картинку меняет, только я его не помню, поищи


Наверх

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