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

Вниз

Работа 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.012 c
1-38281
Dinn
2003-02-05 16:50
2003.02.13
линии с шириной >1 разными стилями


3-38143
RomaIzDurdoma
2003-01-28 22:40
2003.02.13
Базы Lotus Notes


6-38420
AlexanderSK
2002-12-15 16:28
2003.02.13
Apache Dll


1-38287
Anton
2003-02-05 18:12
2003.02.13
Excel


8-38390
bg8
2002-10-22 21:57
2003.02.13
Анализ звука в реальном времени