Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

Wallpapers   Найти похожие ветки 

 
Dot   (2004-10-08 22:36) [0]

Весь инет облазил но ничего путного не нашел.
Кто нить мне может подсказать функцию меняющую обои на рабоче столе
чтобы можно было вводить обои из списка
типа
SetWall(ListBox1.Items[ListBox1.ItemIndex]);
ПРИ этом независимо от того Включен Актив Десктоп или нет!!!!


 
Okcid   (2004-10-08 23:07) [1]

Заглянул тут в FAQ этова сайта и нашёл ответ на твой вопрос)))
http://www.delphimaster.ru/cgi-bin/faq.pllook=1&id=988622498&n=15


 
Sulimxar ©   (2004-10-08 23:09) [2]

Изменить обои можно функцией SystemParametersInfo() Переслав ей в качестве параметров константу SPI_SETDESKWALLPAPER и имя нового файла обоев (тока bmp).
Пример:
              SystemParametersInfo(SPI_SETDESKWALLPAPER,
                                   0,
                                   PChar("C:\SOMEPATH\SOME.BMP"),
                                   SPIF_SENDWININICHANGE);
- может поможет?
Насчет "Актив десктоп" не знаю :/


 
Okcid   (2004-10-08 23:10) [3]

Сорри, http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988622498&n=15


 
Kolan ©   (2004-10-09 12:00) [4]

Если нет active destop то только bmp а, если включен то любое вот
как я делаю:

procedure TForm1.ChangeWallpaper(Path:PwideChar);
const
 CLSID_ActiveDesktop: TGUID = "{75048700-EF1F-11D0-9888-006097DEACF9}";
var
 ActiveDesktop: IActiveDesktop;
begin
 if path <> "" then
   begin
     ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)as IActiveDesktop;
     ActiveDesktop.SetWallpaper(path, 0);
     ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
   end
 else exit;
end;


вот перевод в pwidechar

function TForm1.StringToPWide( sStr: string; var iNewSize: integer ): PWideChar;
var
 pw : PWideChar;
 iSize : integer;
begin
 iSize := Length( sStr ) + 1;
 iNewSize := iSize * 2;

 pw := AllocMem( iNewSize );

 MultiByteToWideChar( CP_ACP, 0, PChar(sStr), iSize, pw, iNewSize );

 Result := pw;
end;


Вот пример вызова:
ChangeWallpaper(StringToPWide(current_dir+only_file_name,iSize));


 
Rifo ©   (2004-10-10 00:48) [5]

Сам не проверял:

program wallpapr;
uses Registry, WinProcs;

procedure SetWallpaper(sWallpaperBMPPath:String;bTile:boolean);
var
 reg : TRegIniFile;
begin
// Изменяем ключи реестра
// HKEY_CURRENT_USER
//   Control Panel\Desktop
//     TileWallpaper (REG_SZ)
//     Wallpaper (REG_SZ)
 reg := TRegIniFile.Create("Control Panel\Desktop" );
 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;




Страницы: 1 вся ветка

Текущий архив: 2004.11.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.059 c
14-1099135392
Yuri Btr
2004-10-30 15:23
2004.11.21
Входящие подключения - проблема с модемом в XP


3-1098712903
Tchainik
2004-10-25 18:01
2004.11.21
IBDataSet.


8-1086086905
g-l-u-k
2004-06-01 14:48
2004.11.21
DblClick в ListBox


14-1099299946
savva
2004-11-01 12:05
2004.11.21
Где можно "пробить" машину на угон?


3-1098281516
lehich
2004-10-20 18:11
2004.11.21
xmlmapper