Форум программистов CodeGuru
18 Январь 2018, 08:09:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: [C++] Как программно сменить обои рабочего стола?  (Прочитано 8519 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Qwentor
Новичок
*
Офлайн Офлайн

Сообщений: 1


Просмотр профиля
« : 02 Май 2011, 19:30:30 »

Как программно сменить обои рабочего стола?
Использую
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"C:\\ds\\2.bmp",SPIF_UPDATEINIFILE);

На Vista/XP проверил - работает, а на 2000, только если снята галочка Active Desktop  Грустный
Как сделать, чтоб работало на 2000? Очень надо именно на этой системе..

нашел в нете что-то про функцию IActiveDesktop, но не пойму как ей пользоваться, ниче не компилируется - выдает ошибки
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 18 Май 2011, 20:18:37 »

Десктоп - отдельное окно. Точнее, там несколько окон. То, где ярлыки - это список. А под ним окно, в котором картинка.
Active Desktop заменяет или перекрывает эти окна.

IActiveDesktop - это интерфейс. У интерфейса могут быть методы.
IActiveDesktop - это COM интерфейс, он понаследован от IUnknown скорее всего. Его надо использовать определенным образом. Если вкратце, то при получении ссылки на него, надо вызывать AddRef, а после - Release.

IActiveDesktop надо получить у текущего объекта ActiveDesktop - а. После использования вызвать Release.

Как работать с ним - описано тут: http://msdn.microsoft.com/en-us/library/bb776830%28v=vs.85%29.aspx
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!