T
traktor
Здравствуйте, гуру COM`а!
Возникла проблема, к которой непонятно с какой стороны подойти...
Если кто-нибудь поможет – буду премного благодарна! =)
У меня есть программа Prog.exe.
Она представляет собой что-то типа БД.
Мне потребовалось программно создать в ней что-то.
Эта самая программа Prog.exe предоставляет свои API.
То есть, мне нужно написать клиент. Пишу:
Вижу ошибку:
Класс не зарегистрирован.
Далее что не делай с pIApp, будет ошибка, ибо он нулевой.
Дико расстраиваюсь, но пытаюсь разобраться.
Пишу свой простенький com-объект out-of-process, exe-шник то есть.
К нему пишу клиент – работает!
Долго роюсь в реестре – записи у моего mycom.exe и их Prog.exe одинаковые.
Регистрировала заново из командной строки, ничего не меняется.
Пробую с другой стороны подползти:
Та же противная ошибка:
Класс не зарегистрирован.
Вопрос.
Что делать то?
В чем может быть ошибка?
Всем отозвавшимся спасибо! =)
Возникла проблема, к которой непонятно с какой стороны подойти...
Если кто-нибудь поможет – буду премного благодарна! =)
У меня есть программа Prog.exe.
Она представляет собой что-то типа БД.
Мне потребовалось программно создать в ней что-то.
Эта самая программа Prog.exe предоставляет свои API.
То есть, мне нужно написать клиент. Пишу:
C++:
#import "Prog.tlb"
В мэине:
if( SUCCEEDED(CoInitialize(NULL)) )
std::cout<<"Ok!"<<std::endl;
ITProgApp pIApp;
CString strErr;
try
{
pIApp = ITProgApp(__uuidof(ITProgApp));
}
catch (_com_error er)
{
const TCHAR * bb = er.ErrorMessage();
strErr = bb;
}
std::cout<<"ITProgApp"<<std::endl;
std::cout << "Error: " << W2A(strErr) << std::endl;
Вижу ошибку:
Класс не зарегистрирован.
Далее что не делай с pIApp, будет ошибка, ибо он нулевой.
Дико расстраиваюсь, но пытаюсь разобраться.
Пишу свой простенький com-объект out-of-process, exe-шник то есть.
К нему пишу клиент – работает!
Долго роюсь в реестре – записи у моего mycom.exe и их Prog.exe одинаковые.
Регистрировала заново из командной строки, ничего не меняется.
Пробую с другой стороны подползти:
C++:
HRESULT hr = OleInitialize(NULL);
IDispatchPtr pIDisp = NULL;
try
{
pIDisp = IDispatchPtr(__uuidof(ITProgApp));
}
catch (_com_error er)
{
const TCHAR * bb = er.ErrorMessage();
strErr = bb;
}
std::cout<<"IDispatchPtr"<<std::endl;
std::cout << "Error: " << W2A(strErr) << std::endl;
Та же противная ошибка:
Класс не зарегистрирован.
Вопрос.
Что делать то?
В чем может быть ошибка?
Всем отозвавшимся спасибо! =)