Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для Aladser
0 / 2 / 0
Регистрация: 31.01.2015
Сообщений: 54

Программная смена обоев. Черный экран на Win 8.1

03.02.2015, 09:22. Показов 2509. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Меняю обои на рабочем столе с помощью:
C++
1
2
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "1.bmp",
   SPIF_UPDATEINIFILE | SPIF_SENDCHANGE)
В Win7 Домашняя Расширенная - работает, в Win 8.1 - черный экран.
Но при этом функция возвращает всегда 1, а GetLastError()в-основном 0, хотя рандомно появилась 1460 и 1477.

Тут мне реально нужно сделать костыль. Как сделать, чтобы в Win 8.1 заработала?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2015, 09:22
Ответы с готовыми решениями:

Программная смена обоев рабочего стола...
Как в Windows XP программно сменить обои рабочего стола? Пробовал сделать так: ...

Вместо обоев черный фон, win 7 pro
Суть в том,что однажды при запуске фон рабочего стола стал черным и никаким образом изменить его не удается,при этом,если сменить тему...

Win 7 до Win 10. Черный экран + мышка
Обновил 7ку до Вин 10. В итоге появился черный экран с мышкой. Мне посоветовали в деспечере задачь отключить автозагрузку антивируса Avast...

4
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
03.02.2015, 11:59
Лучший ответ Сообщение было отмечено Aladser как решение

Решение

Во-первых, попробуйте указать полный путь к файлу.
Во-вторых, звать GetLastError имеет смысл только если функция
завершается с ошибкой (это общее правило для практически любой
WinAPI-шной функции, хотя есть и исключения).
1
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
03.02.2015, 12:24
а файл "1.bmp" где находится ?
0
 Аватар для Aladser
0 / 2 / 0
Регистрация: 31.01.2015
Сообщений: 54
04.02.2015, 11:26  [ТС]
В папке с программой

Добавлено через 7 минут
Спасибо! Заработало, хотя непонятно почему так. 1 же возвращает, значит видел файл в папке с программой.

Добавлено через 19 часов 6 минут
Проблема вернулась. Если напрямую писать имя файла в функцию, то все нормально.
C++
1
2
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:\\Program Files\\1.bmp",
                       SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
Но если вместо имени файла писать void|AnsiString-указатель или ссылку на переменную типа AnsiString, то опять черный экран!
C++
1
2
3
4
5
6
7
8
AnsiString FN = GetCurrentDir();
  void *pFN = &FN;
  for(int i=1; i<FN.Length();i++){
     if(FN[i]=='\\')
       FN.Insert('\\', ++i);}
  FN.Insert("\\\\CurWall.bmp", FN.Length()+1);
  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pFN,
                       SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
Еще одно наблюдение - если вместо имени файла поставить любую строку, то функция выполнится!

Ну как с ней бороться или она вообще не воспринимает в третьем аргументе переменную?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
04.02.2015, 14:23
Зашибись. Указатель void, под которым AnsiString. Кто научил такой ерунде-то? По шее ему.

У AnsiString есть метод c_str() - он отдает как раз то, что тебе нужно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2015, 14:23
Помогаю со студенческими работами здесь

Win XP SP2 черный экран
3драствуйте! Однажды я во время загрузки ПК резко его обесточил. После чего он нормально загрузился. Но был замечен глюк с изображениями в...

Win 8.1 Черный экран (курсор)
На ноутбуке до не давнего времени стояла пиратская восьмерка, зайдя случайно в магазин, мне предложили обновится до 8.1. После чего и...

Win 7 - черный экран смерти (01.06.2015)
Добрый день (вечер) - Система Win 7 Ultimate 64x SP1 (ативирована давно непомню как -кажется KMS) , RAM - 4Гб, HDD - 2 Тб ( 2...

Не хочет устанавливаться Win 8, черный экран!
Здравствуйте! Поставил Винду 8 ( windows 8 профессиональная 32 битная) на установку! Установка идет до &quot;установка устройств 86%&quot;...

Не устанавльвается Win XP (Любая) черный экран
Меня попросили переустановить винду на ноутбуке TOSHIBA. Сначала воткнул LIVESD (чтоб данные сохранить) загружал все хр ни одна не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru