Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2012, 16:22   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
Вопрос Получить доступ к IActiveDesktop

Доброго времени!

Пытаюсь управлять настройками экрана через интерфейс IActiveDesktop.
Как получить доступ к нему?
Код:
var
  ActiveDesktop: IActiveDesktop;
  hDesc:HRESULT;
begin
hDesc:=CoCreateInstance(CLSID_ActiveDesktop,nil,CLSCTX_INPROC_SERVER,IID_IActiveDesktop,ActiveDesktop);
  ActiveDesktop.SetWallpaper(PChar(Img), 0);
  ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
Первый раз отрабатывает нормально, а повтороно вылетает в AV.
Что можно ещё препринять?

Последний раз редактировалось Человек_Борща; 04.10.2012 в 17:10.
Человек_Борща вне форума Ответить с цитированием
Старый 04.10.2012, 17:11   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Может стоит проверить pActiveDesktop?
Меня вот это напрягает: PChar(Img)
Что за тип у Img?
waleri вне форума Ответить с цитированием
Старый 04.10.2012, 17:27   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Проверил. Код исправил. Но он работает только 1 раз, на 2-й раз вылетает ошибка не пойму в чем проблема.
Img - строка.

Последний раз редактировалось Человек_Борща; 04.10.2012 в 17:37.
Человек_Борща вне форума Ответить с цитированием
Старый 04.10.2012, 17:58   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Что возвращает CoCreateInstance() во второй раз?
waleri вне форума Ответить с цитированием
Старый 04.10.2012, 21:47   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Problem resolved.
Код:
var
  ActiveDesktop: IActiveDesktop;
  hDesc:HRESULT;
begin
hDesc:=CoCreateInstance(CLSID_ActiveDesktop,nil,CLSCTX_INPROC_SERVER,IID_IActiveDesktop,ActiveDesktop);
if not Failed(hDesc) then
begin  
ActiveDesktop.SetWallpaper(PChar(Img), 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить доступ MyXa C# (си шарп) 4 03.10.2012 08:10
как получить доступ к диску С Daif2 Помощь студентам 1 06.07.2012 20:42
Не могу получить доступ к файлам Orsini Общие вопросы C/C++ 0 13.06.2012 12:09
Получить доступ в приват prikolist Общие вопросы C/C++ 1 19.05.2010 23:58
Получить доступ к файлу yngwie Win Api 1 08.04.2009 14:11