Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Процедура не изменяет параметр обоев


Автор: 6urunduk 25.7.2010, 16:12
Процедура
Код
Procedure Change;
const
 Desktop: TGuid='{75048700-EF1F-11D0-9888-006097DEACF9}';
var
 ActiveDeskTop:IActiveDesktop;
begin
 ActiveDesktop:=CreateComObject(Desktop) as IActiveDesktop;
 ActiveDesktop.SetWallpaper(StringToOleStr(Form1.FilePach.Caption),WPP);
 ActiveDesktop.ApplyChanges(AD_APPLY_ALL);
end;

(WPP:=RadioGroup1.ItemIndex[0,1,2])
не изменяет позицию рисунка на экране , т.е не изменяет параметры реестра TileWallpaper на "0" или "1" и не имеет доступа к параметру WallpaperStyle
Вопрос: возможно ли через такую процедуру получить доступ к этим параметрам или нужно использовать конструкции типа:
Код
var 
Reg: TRegIniFile; 
begin 
Reg := TRegIniFile.Create('Control Panel'); 
Reg.WriteString('desktop', 'Wallpaper', 'c:\windows\mybmp.bmp'); 
Reg.WriteString('desktop', 'TileWallpaper', '1'); 
Reg.Free; 
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE); 
end


Автор: Amphiluke 25.7.2010, 18:40
Для этого предназначен другой метод — SetWallpaperOptions.
Код

const
  Desktop: TGuid='{75048700-EF1F-11D0-9888-006097DEACF9}';
var
  ActiveDeskTop:IActiveDesktop;
  wpo: _tagWALLPAPEROPT;
begin
  ActiveDesktop:=CreateComObject(Desktop) as IActiveDesktop;
  wpo.dwSize := SizeOf(_tagWALLPAPEROPT);
  wpo.dwStyle := WPSTYLE_CENTER;
  //wpo.dwStyle := WPSTYLE_TILE;
  //wpo.dwStyle := WPSTYLE_STRETCH;
  //wpo.dwStyle := WPSTYLE_MAX;
  ActiveDesktop.SetWallpaperOptions(wpo, 0);
  ActiveDesktop.ApplyChanges(AD_APPLY_ALL);
end;

Автор: 6urunduk 25.7.2010, 18:42
Amphiluke, спасибо, попробуем smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)