Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
Aladser
0 / 2 / 0
Регистрация: 31.01.2015
Сообщений: 45
#1

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

03.02.2015, 09:22. Просмотров 714. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2015, 09:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Программная смена обоев. Черный экран на Win 8.1 (C++ Builder):

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

Смена обоев рабочего стола. - C++ Builder
Добрый день! Я меняю например картинку на рабочем столе вот этим способом. SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "Image.bmp", ...

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

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

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

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

4
Убежденный
Ушел с форума
Эксперт С++
15933 / 7243 / 1140
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
03.02.2015, 11:59 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Во-первых, попробуйте указать полный путь к файлу.
Во-вторых, звать GetLastError имеет смысл только если функция
завершается с ошибкой (это общее правило для практически любой
WinAPI-шной функции, хотя есть и исключения).
1
demmax2004
60 / 138 / 35
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
03.02.2015, 12:24 #3
а файл "1.bmp" где находится ?
0
Aladser
0 / 2 / 0
Регистрация: 31.01.2015
Сообщений: 45
04.02.2015, 11:26  [ТС] #4
В папке с программой

Добавлено через 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
4015 / 2305 / 156
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
04.02.2015, 14:23 #5
Зашибись. Указатель void, под которым AnsiString. Кто научил такой ерунде-то? По шее ему.

У AnsiString есть метод c_str() - он отдает как раз то, что тебе нужно.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2015, 14:23
Привет! Вот еще темы с ответами:

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

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

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

Черный Экран с Ошибкой перед запуском Win - Windows 7
Подскажите как решить данную проблему?через поисковики выдает какую то чушь.поняла что надо влезть в биос.но хотелось бы подробную...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru