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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
MaxxximyM
18 / 2 / 1
Регистрация: 31.08.2011
Сообщений: 132
#1

Установка фонового рисунка рабочего стола - C++

05.04.2012, 18:12. Просмотров 1491. Ответов 10
Метки нет (Все метки)

Нашел по этой теме в инете такой код:

C++
1
2
3
4
5
6
7
8
#include "stdafx.h"
#include <Windows.h>
 
 
void main()
{
    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "D:\\1.bmp",SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
}
Откомпилировал, запустил - фон не поменялся(файл 1.bmp на диск D я положил).
В чем ошибка???
Windows 7, Microsoft Visual Studio 2010
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2012, 18:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Установка фонового рисунка рабочего стола (C++):

Адрес до рабочего стола - C++
Когда прописываю адрес до файла C:\\Users\\%username%\\AppData\\Local\\File.txt то программа просто не видит его!!! Хотя тоже самое в бат...

очистка рабочего стола - C++
Доброго времени суток всем! Нужно в С++ написать программу чтобы она очищала рабочий стол кроме значков Мой компьютер Мои документы. А...

Блокировка рабочего стола! - C++
Доброго времени суток, вчера стало интересно что такое с++ можете помочь? цель такая:HWND des=GetDesktopWindow(); ...

Сделать скриншот рабочего стола - C++
Нужно сделать скриншот рабочево стола, што для етого нужно

Смена обоев рабочего стола - C++
Подскажите, как програмно можно сразу сменить обои? Без перезагрузок, выходов их сеанса и т.п. Любой способ - через WinAPI, реестр. Облазил...

Фоновый рисунок рабочего стола - C++
Всем привет!! Подскажите, пожалуйста, можно ли в с++ сделать картинку фоновым рисунком рабочего стола?? Добавлено через 20 минут Я...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.04.2012, 18:18 #2
Цитата Сообщение от MaxxximyM Посмотреть сообщение
Откомпилировал, запустил - фон не поменялся(файл 1.bmp на диск D я положил).
Скорее всего приложение должно обладать соответствующими правами.
0
MaxxximyM
18 / 2 / 1
Регистрация: 31.08.2011
Сообщений: 132
05.04.2012, 18:20  [ТС] #3
Запустил от имени администратора - ничего не вышло...
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.04.2012, 18:21 #4
тогда нужно почитать: http://support.microsoft.com/kb/97142/ru, http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
1
MaxxximyM
18 / 2 / 1
Регистрация: 31.08.2011
Сообщений: 132
05.04.2012, 18:24  [ТС] #5
Xind можешь откомпилировать и запустить у себя?
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.04.2012, 18:27 #6
MaxxximyM, Проверь что возвращает функция, как тут http://www.firststeps.ru/mfc/winapi/r.php?149
Ошибку более подробно можно узнать через функцию http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx


Цитата Сообщение от MaxxximyM Посмотреть сообщение
можешь откомпилировать и запустить у себя?
Нет под рукой компилятора.
1
MaxxximyM
18 / 2 / 1
Регистрация: 31.08.2011
Сообщений: 132
05.04.2012, 18:34  [ТС] #7
Проверил по первой ссылке, выдает Error Change.
По второй ссылке я не понял немного как сделать.
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.04.2012, 18:37 #8
MaxxximyM,
C++
1
DWORD dw = GetLastError();
И посмотреть код ошибки в dw. Только GetLastError нужно вызвать после установки обоев.
1
MaxxximyM
18 / 2 / 1
Регистрация: 31.08.2011
Сообщений: 132
05.04.2012, 18:41  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <Windows.h>
#include "iostream"
using namespace std;
 
void main()
{
    
    char filename[10];
    strcpy(filename,"1.jpg");
    if (SystemParametersInfo(SPI_SETDESKWALLPAPER,0,
        &filename,SPIF_SENDWININICHANGE)==TRUE)
    {
        cout << "Ok change" << endl;
    }
    else
        cout << "Error change" << endl;
    GetLastError();
}
При этом коде GetLastError ничего не выдает.
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
05.04.2012, 18:46 #10
MaxxximyM, так ведь вы не указали куда передать возвращаемое значение. Я же указал:
C++
1
    DWORD dw = GetLastError();
функция возвращает значение и присваивается переменной dw с типом двойного слова. Теперь нужно вывести на экран значение, это можно сделать через
C++
1
cout << dw;
1
MaxxximyM
18 / 2 / 1
Регистрация: 31.08.2011
Сообщений: 132
05.04.2012, 20:29  [ТС] #11
Получил ошибку 2, тоесть - ERROR_FILE_NOT_FOUND (0x2) согласно MSDN
Но файл то есть!!!

Добавлено через 1 час 31 минуту
Xind спасибо за помощь. Разобрался, вот код:
C++
1
2
3
4
5
6
7
#include "stdafx.h"
#include <Windows.h>
 
void main()
{
    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, L"C:\\1.jpg",SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
}
Нужно просто было добавить L перед "C:\\1.jpg"
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2012, 20:29
Привет! Вот еще темы с ответами:

Программы для рабочего стола - C++
Здравствуйте уважаемы форумчане! Раньше (не профессионально) писал на делфи, но в данный момент изучаю с++. Меня интересует каким способом...

Как читать иконки с Рабочего стола?? - C++
Помогите

Как считывать видео с рабочего стола? - C++
Задача такова: Записать видео с экрана и передать по сети. Как это можно сделать с помощью C++? Может кто знает готовые решения...

Заменить рабочий стол картинкой рабочего стола - C++
Не знаю даже, туда ли я пишу, но все же. Реально ли сделать программу, которая при запуске будет сворачивать все окна, делать скриншот...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.04.2012, 20:29
Ответ Создать тему
Опции темы

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