Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Вниз

Работа с 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-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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
1-44678
BOA_KAA
2003-06-30 13:31
2003.07.14
TDriveComboBox


3-44583
Andrew2000
2003-06-20 11:43
2003.07.14
как узнать пароль Interbase?


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


1-44646
reer
2003-07-01 14:43
2003.07.14
Надеюсь, что 2 тривиальных вопроса по потокам...


9-44533
ghossst
2002-12-29 13:57
2003.07.14
Внимание!Проект 3D-движка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский