Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с IDispatch, интеграция с 1С 
:(
    Опции темы
M9IC
Дата 25.1.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Есть прога Х, которая должна открывать 1С и выполнять какие либо действия.
Но при вызове Invoke все падает.

Код


::OleInitialize(NULL);
//
    OLECHAR FAR* szFunction;
    HRESULT      hr;

    // Указатели на интерфейсы 
    IDispatch*   pDispApp;
    
            // Идентификаторы классов
    CLSID      CLSID_1C;

    // Идентификаторы диспетчеров
    DISPID     dispid_Connect;
    DISPID       dispid_Function;
    
    // Нету аргументов
    DISPPARAMS dpNoArgs = {NULL, NULL, 0, 0};

           // Получим CLSID
    CLSIDFromProgID(L"V81.Application", &CLSID_1C);

            // Создаем приложение
    hr = ::CoCreateInstance(CLSID_1C, NULL, CLSCTX_SERVER, IID_IDispatch, (void**) &pDispApp);

szFunction = OLESTR("Connect");
    hr = pDispApp->GetIDsOfNames(IID_NULL, &szFunction, 1, LOCALE_USER_DEFAULT, &dispid_Connect);

    UINT index = -1;
    EXCEPINFO ExInfo;
    

    VARIANT vConnection;
    ::VariantInit(&vConnection);

             VARIANT vArgs;
    ::VariantInit(&vArgs);
    vArgs.vt      = VT_BSTR;
    vArgs.bstrVal = L"File=\"C:\\1C_BASES\\test\";";        // Для V81.Application
    

    DISPPARAMS dispParams;
    dispParams.cArgs        = 1;
    dispParams.cNamedArgs    = 0;
    dispParams.rgvarg        = &vArgs;
    dispParams.rgdispidNamedArgs = NULL;
    
// Пока еще все прекрасно: hr = S_OK
    // Эта функция должна вернуть COM-соединение. 
    hr = pDispApp->Invoke(
                        dispid_Connect,            // Идентификатор диспетчера
                        IID_NULL,                // Не используется
                        ::GetUserDefaultLCID(),    // Информация локализации
                        DISPATCH_METHOD, 
                        &dispParams,            // Параметры вызываемой функции
                        &vConnection,            // Возвращаемое значение
                        &ExInfo,                // Информация об ошибке
                        &index);                // Индекс некорректного параметра в массиве pDispParms

// Падает при вызове функции Connect с помошью Invoke
// Ошибка         hr    = 0x80020009 Ошибка.    HRESULT
// Описание      bstrDescription    0x0017ae64 "Неверные или отсутствующие параметры соединения с информационной базой"    

// Параметры у функции Connect - строка с путем к каталогу базы.


Запарился уже. Никак не могу понять что не так. Причем этот код работал, а потом перестал.
Помогите плиз.

Это сообщение отредактировал(а) M9IC - 25.1.2008, 13:39
PM MAIL   Вверх
M9IC
Дата 25.1.2008, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Какаято фигня.
Когда ставишь режим "Debag" - не работает.
Когда Release - все работает.

Цитата

Причем этот код работал, а потом перестал.

Это относится к Debug.  То работает, то нет.
PM MAIL   Вверх
izekia
Дата 13.2.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: нет
Всего: 3



M9IC, потому что для BSTR надо писать так 
Код


vArgs.bstrVal = SysAllocString(L"File=\"C:\\1C_BASES\\test\";");

и потом не забыть ее почистить - тоже было бы неплохо
или удобнее пользоваться типом CComVariant из ATL
с BSTR вообще надо быть аккуратнее
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.