Главная страница
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.011 c
14-38461
AlexT1000
2003-01-30 16:08
2003.02.13
как пользоваться функцией HTMLHELP из под Delphi?


14-38527
Vit_Os2
2003-01-28 14:58
2003.02.13
Не подскажете, где можна взять какую литературу по СОМ портам!?


3-38028
alex_bredin
2003-01-29 10:35
2003.02.13
как сбросить счетчик поля + в базах paradox (кроме удаления пол


3-38026
Nikola62
2003-01-29 00:51
2003.02.13
Как узнать значение autoincrement поля в IB5


3-38142
serg_
2003-01-28 21:43
2003.02.13
Целостность на уровне ссылок