Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
9-38000
Ev_genus
2002-05-10 12:41
2003.02.13
Чем DelphiX хуже Direct API. (Это не вопрос)


1-38279
eLVik
2003-02-03 23:14
2003.02.13
TStringList в Resulte


14-38548
Сатир
2003-01-28 20:01
2003.02.13
Задачка под Excel


14-38505
CashDi
2003-01-28 12:28
2003.02.13
Editor


4-38659
inki35
2002-12-29 15:36
2003.02.13
dll+hook





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский