Вниз
Скачать: 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-44893
Empleado
2003-06-27 11:20
2003.07.14
Сегодня пятница ... ржомс


3-44558
abc
2003-06-10 00:34
2003.07.14
как из поля таблицы типа mdb, скопировать данные в таблицу...


14-44892
gsv_
2003-06-26 16:26
2003.07.14
Сделал TdataModule -> TwebModule: не работает ISAPI/NSAPI


14-44821
Danilka
2003-06-26 13:48
2003.07.14
Где взять статистику: кол-во серверов WinNT, Linux, BSD и т.д.?


1-44666
race1
2003-06-29 17:56
2003.07.14
VTV




   Наверх