Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Изменить фоновый рисунок  (Прочитано 17230 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« : 16-04-2010 13:49 » 

Вот появилась необходимость стол изменить, встал перед вариантами:
1. WINAPI
2.Происаться в реестр, а может 1|2

1. Пишу :
Код:
#include "windows.h"
#include "iostream"
#include "stdio.h"
int _tmain(int argc, _TCHAR* argv[])
{
            char cPutKartinki[256];
    strcpy(cPutKartinki,"c:\\cska.bmp");
if (SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(PVOID)&cPutKartinki,SPIF_UPDATEINIFILE | SPIF_SENDCHANGE)==FALSE)
         cout << "Error change" <<endl;
    getch();
    return 0;
}
На выхде - Error change

2. HKEY_CURRENT_USER Control Panel\Desktop Wallpaper изменил на адрес рисунка, ан не работает. В обоих случаях просто на рабочем столе - голубой экран.

Спасибо.
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 19-04-2010 07:00 » 

До сих пор не получается, я в шоке врде все так просто должно быть..... Народ выручай!
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #2 : 19-04-2010 07:10 » 

Быстрый поиск гуглом...
http://netcode.ru/cpp/?click=r-2474.php.htm
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 19-04-2010 07:59 » 

Я просто так на форуме такой простой вопрос не выкладывал бы!!  Я так естествено делал, и в реестре ключи менял, и в папку виндовскую с Wllpaper1.bmp файл свой кидал и преименовывал, и на С прогу писал  (на коорую baldr мне ссылку дает), и ключи разные (SPIF) комбинировал: например  SPIF_SENDWININICHANGE, SPIF_UPDATEINIFILE, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE.
И нифига не работает. Вот бат файл:

reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d C:\Windows\File1.bmp  /f
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v OriginalWallpaper /t REG_SZ /d C:\Windows\File1.bmp  /f
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v WallpaperStyle /t REG_SZ /d 2  /f
pause

На все мои меры ответ - это синий экран рабочего стола. То ли я МЕГА ЛАМЕР, толи может на другом компе попрет...ведь такая простая блин операция (((
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 19-04-2010 09:46 » 

Денисrf, а после перезагрузки обои появляются ? Или значения в реестре возвращаются ?
Записан

Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 19-04-2010 11:09 » 

Нет не появляются. И значения  в реесте остаются по идее с правильными адресами. Все правильно, но не работает ... как всегда )) Есть догадки Алексей1153++?
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 19-04-2010 11:13 » 

Денисrf, нету Улыбаюсь

А если штатно обои сменить, то в реестре точно всё так, как ты предполагаешь, меняется ? Я никогда не пробовал.
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 19-04-2010 11:37 » 

Догадок куча. Проверять нет времени:

1. Что говорит GetLastError?
2. Какая среда разработки?
3. Какая целевая платформа (см. ограничения в MSDN)?
4. ЧТо-то мне подсказывает, что надо использовать оба способа - сначала прописать в реестр, а потом вызывать ф-ю?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 19-04-2010 16:02 » 

GetLastError оканчивается значением 2
VS2008
Ограничения не смотрел.
Я так иделаю, сначала все изменения в реестре, а потом уже функцию.
На одном сайте видел код, правда на Delphi, там еще и доступ к рабочеу столу получали загружали CLSID какого то COM'а. В С++ точно такого не нужно, просто я уже не знаю что думать )))

Штатно меняю рабочий стол и все в реестре меняется как и я предпологаю только все ссылки на C:\Documents and Settings\Admin\Local Settings\Application Data\Microsoft\Wallpaper1.bmp

Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 19-04-2010 19:14 » 

Так вроде все. Всем огромное спаибо. Подбором извращений все решилось )) и как всегда все проще чем я думал )))
1. Достаточно одного изменения в реестре HKEY_CURRENT_USER Control Panel\Desktop Wallpaper на адрес рисунка (естевственно в .bmp формате)
2. Для активации изменений оповещаем "всех" - SPIF_SENDWININICHANGE флагом из функции с нулевым параметром адреса рисунка:

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, NULL, SPIF_SENDWININICHANGE);
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 20-04-2010 02:50 » 

а это
GetLastError оканчивается значением 2
- "Не удается найти указанный файл. " Улыбаюсь
Записан

Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 20-04-2010 06:14 » 

Ну теперь я же без адреса файла все делаю. А так то я разными спосабами адерес передовал в функцию, и саму переменную менял.  Нужно разобраться, но потом )))
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 20-04-2010 06:43 » 

Денисrf, иногда длинный адрес в кавычки надо заключать.
Записан

Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 20-04-2010 07:53 » 

Писал так:

if (SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(PVOID)"c:\\LamerYa.bmp",SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE )==FALSE)
   {
      cout << "Error change" <<endl;
      cout <<GetLastError()<<endl;
   }
   getch();
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #14 : 20-04-2010 07:57 » 

Я думаю картинка должна находится в одной из виндовских папок, чтобы ф-я срабатывала. А может заморочки какие с виндой.

естевственно в .bmp формате

Поэтому я про целевую платформу и спрашивал.

Цитата
The pvParam parameter can specify a .jpg file.

    Windows Server 2003 and Windows XP/2000:  The pvParam parameter cannot specify a .jpg file.

Кстати, заметь. Про Висту и семёрку ни слова.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Денисrf
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 21-04-2010 20:58 » 

Ну наверное там уже можно .jpg юзать )) надо глянуть...
Записан

Your password is personal - do not share it with anyone and make sure it is not easy to crack.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines