Главная страница
    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-44638
MetalFan
2003-06-30 14:07
2003.07.14
---|Ветка была без названия|---


4-44945
Aleksandr
2003-05-13 15:43
2003.07.14
Не очищается окно при вводе текста


3-44600
www
2003-06-21 07:59
2003.07.14
Индексы в Paradox


1-44690
Coder 911
2003-06-30 12:41
2003.07.14
Функция AddChild в TreeView.


3-44616
b_baranov
2003-06-19 13:00
2003.07.14
По какому принципу назначать имена таблицам в базе?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский