Главная страница
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.022 c
1-38154
maxim2
2003-02-04 08:55
2003.02.13
Как засунуть ролик Flash в EXE


1-38382
Vitus
2003-02-03 18:46
2003.02.13
Как программно сделать элемент в TreeView выбранным?


1-38170
Тип
2003-02-04 17:26
2003.02.13
Как выделать узел дерева?


3-38013
Nevel
2003-01-26 08:59
2003.02.13
Из win-кодировки 1251 перевести в 866


1-38228
REA
2003-02-04 13:24
2003.02.13
TActionToolbar usage