Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
ВнизРабота SystemParametersInfo Найти похожие ветки
← →
YY (2002-12-29 22:56) [0]Вопрос, собственно, не столько по WinApi, сколько по системе.
Не подскажет ли кто-нибудь, какSystemParametersInfo
работает с реестром и файлами настроек Windows?
Например, в программе, меняющей обои, есть строка:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nil, SPIF_SENDWININICHANGE or SPIF_UPDATEINIFILE);
При определённых настройках системы фон нормально меняется, но при других, функция вместо этого пишет в файл Win.ini параметр Wallpaper=путь_к_картинке, а в реестре вместо пути к картинке ставит "(None)". Картинка после этого перестаёт отображаться.
Хотелось бы узнать, от чего это зависит.
Конечно, мне могут ответить, что лучше переписать код (по-моему, всё дело вSPIF_UPDATEINIFILE
), но, к сожалению, я не имею такой возможности из-за проблем с совместимостью разных версий Delphi.
← →
Rouse_ (2002-12-29 23:27) [1]> Например, в программе, меняющей обои
Какая такая?
При определённых настройках ... нормально меняется, но при других, функция ...
Каких именно?
Хотелось бы узнать, от чего это зависит.
От стиля написания программы, и спрособа опроса системы о настройках
Желаю успехов
ЗЫ: Больше конкретики
← →
YY (2002-12-30 01:54) [2]> > Например, в программе, меняющей обои
> Какая такая?
Вот урезанная процедура:
procedure SetWallp(WallpPath:String);
var
Reg:TRegistry;
begin
Reg:=TRegistry.create;
Reg.RootKey:=HKEY_CURRENT_USER;
Reg.CloseKey;
if Reg.OpenKey("Control Panel\Desktop",False)=False then begin Reg.Destroy;Exit;end;
if Reg.ValueExists("Wallpaper")=False then begin Reg.Destroy;Exit;end;
Reg.WriteString("WallPaper",WallpPath);
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,nil,SPIF_SENDWININICHANGE or SPIF_UPDATEINIFILE);
Reg.CloseKey;
Reg.Destroy;
end;
Описываю свои действия:
Создал форму, кунул на неё кнопку и Edit и вызывал эту процедуру при нажатии на кнопку с параметром из Edit"а.
Запустил полученное приложение на Windows 2000. Картинка меняется, в реестре есть путь. После перезагрузки картинка тоже висит.
Перезагрузился под Windows 95. Сначала и в win.ini и в реестре писалось "(None)". Затем я из настроек рабочего стола поустанавливал разные картинки - всё менялось. Затем ещё раз запустил программу - картинка появилась на рабочем столе, но в реестре стоит "(None)" => после перезагрузки картинки не будет.
Везде указывались реальные пути картинок в формате *.BMP.
В общем, какие-то разные эффекты получаются в зависимости от того, что я делаю.
> > При определённых настройках ... нормально меняется, но при других, функция ...
> Каких именно?
Вот именно это я и хочу узнать.
Точно знаю, что эта процедура (по крайней мере, в более полном виде) работала на множестве машин и операционок, в частности, на Win9X.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.057 c