Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1262879478
Kerk
2010-01-07 18:51
2010.03.28
Проект минздравсоцразвития РФ


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


15-1263151091
Дмитрий С
2010-01-10 22:18
2010.03.28
String в delphi2010


2-1264166419
timekiller
2010-01-22 16:20
2010.03.28
Ширина и высота ячеек stringgrid вручную


1-1246863401
WeX
2009-07-06 10:56
2010.03.28
Реализовать систему плагинов