Форум: "Основная";
Текущий архив: 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