Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Баги при использования com-интерфейса [D7]


zero-g ©   (2005-08-14 09:13:00) 

Доброго времени суток уважаемые коллеги!

У меня такая проблеммка.
Использую в своей программе, Wallpaper v.2.3, com-интерфейс для смены фона рабочего стола.
файл программы
http://alexshad.pisem.net/file/wallp.zip

процедура смены фона

uses ComObj,ShlObj;
....
procedure SetWallpaper(sWallpaperBMPPath : String; bTile : byte);
const
CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888- 006097DEACF9}';
var
ActiveDesktop: IActiveDesktop;
t_ : WideString;
wp : _tagWALLPAPEROPT;
begin
t_ := sWallpaperBMPPath;
try
 ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
except
 showmessage('Error CREATE COM OBJECT');
end;
wp.dwSize := sizeof(_tagWALLPAPEROPT);
if bTile = 3 then //по растянуть
wp.dwStyle := WPSTYLE_STRETCH;
if bTile = 2 then //по замостить
 wp.dwStyle := WPSTYLE_MAX;
if bTile = 1 then //по центру
 wp.dwStyle := WPSTYLE_CENTER;
try
 ActiveDesktop.SetWallpaperOptions(wp,0);
 ActiveDesktop.SetWallpaper(PWideChar(t_),0);
 ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
except
 showmessage('Error SET & APPLAY');
end;
ActiveDesktop := NIL;
end;

Пример использования  

...
SetWallpaper('C:\mywallpaper.jpg',3);
...

Ну так вот, сама процедура работает нормально.
приложение работает на всех осях нормально.
но тут мне один из ее пользователей сказал о баге, о котором я вообще бы не подумал.

Дело в следующем.
Юзер использует OutLook Expesse для приема почты, и во время когда происходит смена фона рабочего стола, у него увеличивается в размерах ряд с  кнопками : Сохранить, Вставить, Ответить....   Кнопки становятся больше и не помещаются на экране.

Я тоже пользуюсь OutLook Expesse, но как то не обращал на это внимания, но попробывал протестить данный вариан, и убедился что это так.

Ну так вот. В самой прогремме сторонние приложения вообще не используются, ни процессы их ни что либо другое, поэтому я и грешу на com-интерфейс....

Кто нить с таким сталкивался, или у кого нить есть какие нить идеи??? Кроме переписки движка по установки через реестр ))) Так как это не актуально )))

В общем люди, я без понятия из-за чего такая фигня происходит. Очень нуждаюсь в умных советах.

Зарание спасибо.


zero-g   (2005-08-14 13:16:00) [1]

Да, спасибо.
Убрал AD_APPLY_FORCE, теперь с OutLook Expesse никаких проблем )))

Еще раз спасибо :)

Теперь осталось тока на всех виндозных осях протестить, посмотреть, будет ли работать смена фона без глюков :)


Ученик   (2005-08-14 12:55:00) [2]

Может быть убрать AD_APPLY_FORCE


zero-g   (2005-08-14 09:17:00) [3]

Да и кстате,
данная фигня происходит если стоит режим установки "Растянуть"
Если стоит режим "По центру", то все нормально.


Наверх

Титульная страница Поиск, карта сайта Написать письмо