Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Вниз

Смена обоев рабочего стола   Найти похожие ветки 

 
uniken1 ©   (2009-06-17 07:07) [0]

Написал программу для смены обоев рабочего. Общий принцип работы такой:
Растягиваю форма на весь экран, делаю ее StayOnTop и
Windows.PaintDesktop(Form1.Canvas.Handle);
Сохраняю в bmp, делаю свои изменения и сохраняю в файл.
Применяю для рабочего стола
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(FileName), SPIF_SENDCHANGE);

Все работает, но иногда картинка мелькает и сразу исчезает, хотя если нажать Ctrl-Alt-Del(появится окно Безопасность Windows), то примененная мной картинка там появляется.

В чем может быть причина?

PS. тоже самое всегда происходит сWinServer 2008...


 
KSergey ©   (2009-06-17 11:45) [1]

я в этом не шарю, но есть подозрение, что подменяется какая-то не на фоновая картинка в коде.
Т.к. та картинка, что возникает при Ctrl-Alt-Del - это не та, что устанавливает пользователь.

Может почитать какие ещ еесть параметры у SystemParametersInfo подходящие? (я про константы в первом и последнем параметре)


 
Плохиш ©   (2009-06-17 12:01) [2]

SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE

PS. http://support.microsoft.com/kb/97142


 
uniken1 ©   (2009-06-17 13:03) [3]

Вообще я пользовался этим
http://msdn.microsoft.com/en-us/library/ms724947.aspx
В самом конце там описание
SPIF_UPDATEINIFILE - Writes the new system-wide parameter setting to the user profile.
SPIF_SENDCHANGE - Broadcasts the WM_SETTINGCHANGE message after updating the user profile

Т.е. если используется SPIF_UPDATEINIFILE то картинка рабочего стола применяется как постоянная, а если только SPIF_SENDCHANGE, то действует только в течении одного сеанса(что мне и надо).
После всех экпериментов напрашиваетя предположение что программа запускается раньше explorer"a и обои меняются для пользователя SYSTEM


 
Плохиш ©   (2009-06-17 14:13) [4]


> Т.е. если используется SPIF_UPDATEINIFILE то картинка рабочего
> стола применяется как постоянная, а если только SPIF_SENDCHANGE,
>  то действует только в течении одного сеанса(что мне и надо).
>
>

Там этого не написано.


 
Плохиш ©   (2009-06-17 14:16) [5]


If a system parameter is being set, specifies whether the user profile is to be updated, and if so, whether the WM_SETTINGCHANGE message is to be broadcast to all top-level windows to notify them of the change.

This parameter can be zero if you don"t want to update the user profile or broadcast the WM_SETTINGCHANGE message, or it can be one or more of the following values.


 
uniken1 ©   (2009-06-17 14:54) [6]


> This parameter can be zero if you don"t want to update the
> user profile or broadcast the WM_SETTINGCHANGE message,
> or it can be one or more of the following values.


В моем случае 0 ни на что не влияет


 
Cobalt ©   (2009-06-22 13:56) [7]

Ох, я тоже в далеком 2000-ом писал такую прогу, которая каждый день меняла обои...
Поискать что ли её исходники?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.004 c
15-1262467825
Юрий
2010-01-03 00:30
2010.03.28
С днем рождения ! 3 января 2010 воскресенье


2-1264500883
Вася
2010-01-26 13:14
2010.03.28
Динамическое создание экземпляра ТТreeNodes


15-1262855052
Александр Иванов
2010-01-07 12:04
2010.03.28
Настройка SSL в IIS 6.0


15-1262988764
trxnet
2010-01-09 01:12
2010.03.28
Декодирование Quoted-Printable, Base64


15-1262910051
DillerXX
2010-01-08 03:20
2010.03.28
Сопротивление...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский