Вниз
Скачать: CL | DM;

Работа с ActiveDesktop через CreateComObject   Найти похожие ветки 

 
Ал   (2003-04-22 15:56) [0]

Откуда берется CLSID_ActiveDesktop: TGUID = "{75048700-EF1F-11D0-9888-006097DEACF9}"?
Может быть, чтобы под Win98 CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop ломался, потому что в системе не зарег. этот класс или у него другой GUID?
Хорошим тоном считается определение CLSID через ProgID:
function ProgIDToClassID(const ProgID: string): TGUID;
но в регистре у ключа {75048700-EF1F-11D0-9888-006097DEACF9} нет подключей с ProgID.

Знатоки, подскажите:
1) является ли TGUID = "{75048700-EF1F-11D0-9888-006097DEACF9} для Active машинно (платформенно) независимым?
2) если в Win98 с IE5 CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop ломается, то что это может означать?


 
Ал   (2003-04-24 12:51) [1]

Делал CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop в разных программах поочередно на одной машине Win98.
Одна программа работает, в другой ломается с кодом, который не описан в API-справке на CreateComObject.

Понимаю, что дело во второй программе. Но может кто-то уже сталкивался - подскажете, какие ситуации бывают. А так придется искать во второй проге, с чем конфликтует CreateComObject. Трудоемко.


 
Ал   (2003-04-25 15:48) [2]



 
Ал   (2003-04-30 11:59) [3]

Спасибо, Богуславу с форума KOL MCK!

Дело в CoInitialize(nil).

program RegTest2;

uses
Windows,
KOL,KOLComObj,ActiveX,ShlObj;

procedure TurnActiveDesktop(state:Bool);
const
CLSID_ActiveDesktop: TGUID = "{75048700-EF1F-11D0-9888-006097DEACF9}";
var
ie:IActiveDesktop;
opt:TCOMPONENTSOPT;
begin
ie:= CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
opt.dwSize := sizeof(opt);
opt.fActiveDesktop := state;
opt.fEnableComponents := state;
ie.SetDesktopItemOptions(opt,0);
ie.ApplyChanges(AD_APPLY_REFRESH);
end;


begin
CoInitialize(nil);
TurnActiveDesktop(true);
end.

Причем вызов CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop в D4 прекрасно срабатывал и без предварительного CoInitialize(nil).
А в D6 действительно нужно сначала CoInitialize(nil), причем в самом начале программы перед другими операторами (согласно справке).





Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
14-44840
Юрий Федоров
2003-06-26 17:23
2003.07.14
Перлы горе-переводчика англ. фильмов


1-44709
Новенький
2003-07-01 03:57
2003.07.14
Label


7-44923
Dmk
2003-05-03 14:32
2003.07.14
TaskBar


14-44887
Ru
2003-06-27 09:29
2003.07.14
Будьмо!


4-44940
Юлия
2003-05-12 10:55
2003.07.14
Как поменять заголовок окна чужого приложения?




   Наверх