У меня есть программа, в которой я вызываю exe из COleDispatchDriver. Это дает указатель m_lpDispatch как NULL. Я вызываю это из dll из основного исполняемого файла. Я добавил CoInitialize(NULL)/CoUninitialize() в начало и конец кода. Но все равно exe не появляется.
Совместная инициализация (НУЛЬ);
matProp = IMatProp();
matProp.CreateDispatch(_T("MatProp.Document"));
matProp.Initialize();
matProp.ShowApplication( SW_SHOW );
CoUninitialize();
IMatProp — это созданный машиной класс-оболочка IDispatch, который является подклассом класса ColeDispatchDriver. И ниже приведены методы этого класса.
длинный IMatProp::Initialize() {
long result;
InvokeHelper(0x1, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
return result;
}
длинный IMatProp::ShowApplication(длинное шоу) {
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x2, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
show);
return result;
}
Это отлично работало при вызове из exe, но при вызове из dll выдавало эту проблему. Пожалуйста помогите. Большое спасибо.
CreateDispatch
дает сбой, войдите в отладчик и посмотрите, где именно происходит сбой внутри, и что такоеHRESULT
код. - person Roman R.   schedule 16.08.2012