Люди, объясните как правильно регистрировать СОМ-объект в реестре, чтобы потом, по его ProgID, можно было вызывать из других программ, пользующихся его функциями. Если можно, то пример на Visual С++ 2008, так как в ней работаю.
25.05.10 17:03: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Здравствуйте, Muxeu, Вы писали:
M>Люди, объясните как правильно регистрировать СОМ-объект в реестре, чтобы потом, по его ProgID, можно было вызывать из других программ, пользующихся его функциями. Если можно, то пример на Visual С++ 2008, так как в ней работаю.
Создай визардом ATL-проект и в нём COM-объект, он тебе почти всё сам сделает. Потом посмотришь на нагенерённые файлы.
Если же ты уже написал объект, и тебе надо только добавить к нему ProgID — то смотри, что у него прописано в объявлении класса
— если DECLARE_REGISTRY_RESOURCEID(IDR_xxxxx), то добавь в соответствующий .rgs несколько строчек
HKCR
{
Demobject.DemoObject.1 = s 'DemoObject Class'
{
CLSID = s '{E153F9F0-BE67-41BB-AAF7-D9F13FF8DBEE}'
}
Demobject.DemoObject = s 'DemoObject Class'
{
CLSID = s '{E153F9F0-BE67-41BB-AAF7-D9F13FF8DBEE}'
CurVer = s 'Demobject.DemoObject.1'
}
NoRemove CLSID
{
ForceRemove {E153F9F0-BE67-41BB-AAF7-D9F13FF8DBEE} = s 'DemoObject Class'
{
ProgID = s 'Demobject.DemoObject.1'
VersionIndependentProgID = s 'Demobject.DemoObject'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{D09D11FC-4CEF-47BA-B285-9EA2FDD313E0}'
}
}
}
— если DECLARE_NO_REGISTRY — замени на DECLARE_REGISTRY, либо на DECLARE_REGISTRY_RESOURECEID, напиши .rgs-файл и добавь его в ресурсы.