Код (Text): DISPPARAMS dp = {0}; VARIANT vt[11]; HRESULT hr; dp.cArgs = 3; dp.cNamedArgs = 0; dp.rgvarg = vt; vt[0].vt = VT_BOOL; vt[0].boolVal = -1; // TRUE -1, FALSE 0 vt[1].vt = VT_BOOL; vt[1].boolVal = -1; vt[2].vt = VT_I4 ; vt[2].lVal = 0; vt[3].vt = VT_BSTR; vt[3].bstrVal = SysAllocString( (L"C:\\1") ); hr = CallMethod(IDDocument,OLESTR("PrintOut"),&dp,NULL); Суть проблемы пока dp.cArgs равен 3 проблем нету, как только я делаю dp.cArgs = 4. Мне возвращают 0x80020005 - не совпадение типов. Для MS Office есть заголовочные файлы под С++ с уже описанными методами ?... Какого типа должен быть тогда 4й параметр ? Пробовал передавать в 4й параметр и VT_ERROR - DISP_E_PARAMNOTFOUND, результат тотже.
> Какого типа должен быть тогда 4й параметр ? Если 11 параметр имеет тип VT_BOOL и равен VARIANT_TRUE (hint использовать VARIANT_TRUE/VARIANT_FALSE, они определены в WTypes.h), то 4 параметр должен иметь тип VT_BSTR. Я точно не знаю, но возможно, что т.к. ты не задал 11 параметр, word из принципа хочет, чтобы 4 параметр отсутствовал или был пустым. > Пробовал передавать в 4й параметр и VT_ERROR - DISP_E_PARAMNOTFOUND, результат тотже. Вместо всех необязательных параметров можно использовать VT_EMPTY: Код (Text): ... // описал, инициализировал, задал тип и используй сколько влезет VARIANT vEmpty; VariantInit(&vEmpty); vEmpty.vt = VT_EMPTY; ... > Для MS Office есть заголовочные файлы под С++ с уже описанными методами ?... Заголовочные файлы зависят от версии офиса. Есть разные способы импортировать описания методов. Только для определения типа параметров это мало поможет, т.к. они имею тип VARIANT. В любом случае придется смотреть хелп VBA или msdn. Пример msword.h (страница весит 150кб)