Главная страница
    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-1262975426
Pitbull
2010-01-08 21:30
2010.03.28
HTML Help Workshop


6-1214858864
cerber
2008-07-01 00:47
2010.03.28
сохранить картинку


1-1244994785
RWolf
2009-06-14 19:53
2010.03.28
D5: "step into" в код DLL


15-1262773736
NewZ
2010-01-06 13:28
2010.03.28
Драйверы Windows.


2-1264626549
kalexi
2010-01-28 00:09
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский