Форум: "WinAPI";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Вниз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;
вот перевод в pwidecharfunction 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.07 c