com метод Document.PrintOut

Тема в разделе "WASM.WIN32", создана пользователем XshStasX, 5 окт 2011.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Код (Text):
    1.     DISPPARAMS  dp = {0};
    2.     VARIANT     vt[11];
    3.     HRESULT     hr;
    4.     dp.cArgs = 3;
    5.     dp.cNamedArgs = 0;
    6.     dp.rgvarg = vt;
    7.  
    8.     vt[0].vt = VT_BOOL;
    9.     vt[0].boolVal = -1; // TRUE  -1, FALSE 0
    10.     vt[1].vt = VT_BOOL;
    11.     vt[1].boolVal = -1;
    12.     vt[2].vt = VT_I4 ;
    13.     vt[2].lVal = 0;
    14.  
    15.     vt[3].vt = VT_BSTR;
    16.     vt[3].bstrVal = SysAllocString( (L"C:\\1") );
    17.  
    18.     hr =  CallMethod(IDDocument,OLESTR("PrintOut"),&dp,NULL);
    Суть проблемы пока dp.cArgs равен 3 проблем нету, как только я делаю dp.cArgs = 4.
    Мне возвращают 0x80020005 - не совпадение типов.
    Для MS Office есть заголовочные файлы под С++ с уже описанными методами ?...
    Какого типа должен быть тогда 4й параметр ?
    Пробовал передавать в 4й параметр и VT_ERROR - DISP_E_PARAMNOTFOUND, результат тотже.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    > Какого типа должен быть тогда 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):
    1. ...
    2. // описал, инициализировал, задал тип и используй сколько влезет
    3. VARIANT vEmpty;
    4. VariantInit(&vEmpty);
    5. vEmpty.vt = VT_EMPTY;
    6. ...
    > Для MS Office есть заголовочные файлы под С++ с уже описанными методами ?...
    Заголовочные файлы зависят от версии офиса. Есть разные способы импортировать описания методов. Только для определения типа параметров это мало поможет, т.к. они имею тип VARIANT. В любом случае придется смотреть хелп VBA или msdn. Пример msword.h (страница весит 150кб)