Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.14;
Скачать: 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 вся ветка

Текущий архив: 2003.07.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.038 c
14-44863
Filat
2003-06-26 11:48
2003.07.14
ЭЦП на элиптических кривых. Можно ли это реализовать в Дельфи?


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


6-44780
Drain_x
2003-05-07 12:11
2003.07.14
Как в win2000 программно открыть доступ к каталогу ?


6-44778
Staraya
2003-05-06 12:37
2003.07.14
Как мне расшарить ресурс, т.е. (аналог net use)


1-44656
Igorok
2003-07-02 12:36
2003.07.14
StringGrid + OnKeyPress