Что-то не заладилось в win7 х64, в ХР х32 все работало на ура, в чем причина? Пример: Код (Text): //Глобальная переменная IID IID_IAcadApplication = {0x2959C1CC,0x8577,0x4EDB,{0xAD,0xDC,0x6E,0xBB,0xAB,0x14,0x79,0x26}}; void DoAutoCAD(void) { HRESULT hr; CLSID Autoclsid; PVOID pAutoCAD; CoInitialize(NULL); hr = CLSIDFromProgID(L"AutoCAD.Application",&Autoclsid);// Работает, возвращает CLSID который в реестре прописан. if(SUCCEEDED(hr)) { hr = CoCreateInstance(Autoclsid,NULL,CLSCTX_INPROC_SERVER,IID_IAcadApplication, (void**)&pAutoCAD); if(SUCCEEDED(hr)) { //Возвращает "Класс не зарегистрирован" //AutoCAD ставил тот-же что и на Хрюшке стоял //............((((( } } CoUninitialize(); return; } Пробовал вместо IID_IAcadApplication передавать IID_IDispatch, IID_IUnknown все одно "Класс не зарегистрирован";
AutoCAD установил 64-битный, версии 2010. Вызов CreateInstance естественно идет из 64-битного процесса. Просто не верится что такая солидная прога не поддерживает COM-интерфейсы(свои же). Тогда бы в мануале была бы сноска на это.
В реестре CLSID такой-же как и в библиотеке типов у CLSID_IAcadApplication. На мой взгляд все должно работать(и работало), но как показала практика... что-то не то я вижу))).