Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как узнать путь к wallpaper


Автор: Kesh 15.2.2006, 21:48
Дело в том, что если картинка BMP, то имя файла хранится в HKCU\Control Panel\Desktop\Wallpaper,
если картинка, скажем в JPEG, то имя файла хранится в HKCU\Control Panel\Desktop\ConvertedWallpaper и но есть еще и ключ OriginalWalllpaper, да еще и PrevWallpaper...

Так вот есть вопрос... Откуда и как вытащить имя файла текущей Wallpaper... Если можно с примером... smile

Автор: Albinos_x 15.2.2006, 22:30
Цитата(Kesh @ 15.2.2006, 21:48 Найти цитируемый пост)
Дело в том, что если картинка BMP, то имя файла хранится в HKCU\Control Panel\Desktop\Wallpaper

не совсем так.... винда(... по крайней мере ХР) копирует устанавливаемую картинку в каталог ..\Documents and Settings\User\Local Settings\Application Data\Microsoft и конвертирует её в BMP... оттуда она и подгружается на рабочий стол...и тогда сам путь к исходной картинке находится в
HKCU\Control Panel\Desktop\ConvertedWallpaper
Добавлено @ 22:35
PS:
Цитата(Albinos_x @ 15.2.2006, 22:30 Найти цитируемый пост)
копирует устанавливаемую картинку в каталог

если не BMP

Автор: Kesh 16.2.2006, 09:02
Albinos_x, вот-вот... А как узнать, какая картинка сейчас установлена???

Автор: Snowy 16.2.2006, 10:37
У меня картинка всегда здесь: HKCU\Control Panel\Desktop\Wallpaper
Независимо от формата.
Если формат не bmp, то конвертится в AppData в bmp.
Но прописана все равно здесь.

Автор: Kesh 16.2.2006, 11:35
Snowy, а у меня нет... если она в jpg, то она остается в convertedwallpaper как jpg, а в Appdata записывается как bmp...

Автор: Snowy 16.2.2006, 11:48
А зачем тебе конвертед валпапер?
Винда же работает не с оригиналом, а с bmp.
А bmp всегда прописан в реестре в одном месте.

Автор: Kesh 17.2.2006, 00:11
Snowy, в каком?

Автор: Quadr0 17.2.2006, 00:59
...

Автор: Kesh 17.2.2006, 15:34
Quadr0, а у меня там только bmp-шки хранятся...

Автор: Snowy 17.2.2006, 15:55
Ну так и юзай bmpшку. Зачем тебе жпега???

Автор: Marriage 17.2.2006, 17:04
А разве Wallpaper не храниться в файле C:\WINDOWS\ACD Wallpaper.bmp ?

Автор: Snowy 17.2.2006, 17:14
smile Там хранится обоина ACDSee.
Давайте посчитаем на пальцах процент людей, которые ставят обоину через ACDSee...

Автор: Kesh 18.2.2006, 11:44
Цитата(Snowy @ 17.2.2006, 15:55 Найти цитируемый пост)
Ну так и юзай bmpшку. Зачем тебе жпега???

Мне надо запоминать wallpaper пользователя, чтобы вернуть его после работы программы...
http://forum.vingrad.ru/index.php?showtopic=83650

Автор: z-END 18.2.2006, 12:46
ActiveDesktop здесь:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\General
Обычная обоина здесь:
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper

Автор: Albinos_x 18.2.2006, 12:56
Цитата(Kesh @ 18.2.2006, 11:44 Найти цитируемый пост)
Мне надо запоминать wallpaper пользователя, чтобы вернуть его после работы программы

ну так пользуйся
HKCU\Control Panel\Desktop\Wallpaper
если картинка находится по адресу:
..\Documents and Settings\User\Local Settings\Application Data\Microsoft
и ты собираешся устанавливать не .bmp картинку, то делать резервную копию картинки, а потом устанавливать свою... если прога завершает работу, то копировать старый рисунок обратно в папку и устанавливать на рабочий стол... если предпологается, что прога будет работать постоянно в фоновом режиме и загружаться через автозагрузку, то проще использовать функцию

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, {имя файла}, Update);

параметр Update может принимать значения: SPIF_UPDATEINIFILE - установить обои постоянно;

SPIF_SENDCHANGE - установить обои только на текущий сеанс работы пользователя

в твоём случае при загрузке программы устанавливать обои параметром SPIF_SENDCHANGE, т.е если пользователь отключит прогу досрочно или через диспетчер задач, то обои останутся до перезагрузки. ну и при нормальном завершении можно также восстановить обои.

Автор: Kesh 19.2.2006, 00:18
Albinos_x, в HKCU\Control Panel\Desktop\Wallpaper хранится только BMP wallpaper, если пользователь устанавливал ее из JPG, то она хранится не в HKCU\Control Panel\Desktop\Wallpaper, а в ..\Documents and Settings\User\Local Settings\Application Data\Microsoft...
Поэтому я и не знаю, какая из этих картинок действительна... Откуда мне брать путь?...

Как мне узнать, wallpaper сейчас установлен для ActiveDesktop или как обычная картинка?..

Автор: Albinos_x 19.2.2006, 00:40

винда использует BMP, поэтому она преобразует картинку в BMP и сохраняет преобразованную картинку в указанную мной выше папку, и от туда эта картинка и устанавливается, ....

т.е. для чистоты эксперимента поставь JPG картинку, а потом удали и перезагрузись... картинка останется, а вот если ты тоже проделаешь с BMP, то она по идее и не даст тебе её удалить, но если удалишь, то после перезагрузки на рабочем столе не будет установлено вообще картинки...

в общем тебе нужно использовать адрес находящийся в
HKCU\Control Panel\Desktop\Wallpaper

Автор: Bog d`An 19.2.2006, 07:26
Цитата(Snowy @ 17.2.2006, 17:14 Найти цитируемый пост)
Давайте посчитаем на пальцах процент людей, которые ставят обоину через ACDSee...

меня посчитайsmile

Kesh, чем тебе так БМП не нравится?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)