Главная страница
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.054 c
1-1100090024
Angela
2004-11-10 15:33
2004.11.21
Как разделить Shape с помощью Splitter


14-1099645029
WondeRu
2004-11-05 11:57
2004.11.21
Балаковская АЭС


3-1098368557
MORA
2004-10-21 18:22
2004.11.21
глюк в программе IB Console


1-1099990169
race1
2004-11-09 11:49
2004.11.21
caption


3-1098188292
Arkady
2004-10-19 16:18
2004.11.21
Номер по порядку в SQL