Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Snak2013 от Апрель 21, 2017, 12:59



Название: Работа с COM объектом
Отправлено: Snak2013 от Апрель 21, 2017, 12:59
Доброго времени суток, есть некий COM объект из которого надо получить данные, пытаюсь сделать это так:

Код:
    ByteArray object("MeasurementServer.CoMeasurementServer");
    QAxObject* axobject = new QAxObject(object, 0);
    if(!axobject->isNull())
    {
        const QString test = "VD53586643AE74C38A1BDF03D34991850";
        QAxObject* MUnit = axobject->querySubObject("MUnit(const QString&)", test);
        if(!MUnit->isNull())
        {
            QString data = MUnit->dynamicCall("Designation").toString();
        }

Ошибок этот код не возвращает но данные тоже получить не удается переменная дата получает получает пустое значение если получать так QVariant test = MUnit->dynamicCall("Designation") то переменная "test" получает пустой вариант.
К Com объекту прилагается справка в которой написано: IMeasurementServer Это базовый интерфейс для доступа к COM у меня он создается вот здесь (QAxObject* axobject = new QAxObject(object, 0);) И создается он точно правильно (я вызывал один из его методов он вернул данные правильно). Далее для работы мне нужно получить другой интерфейс который я получаю так (QAxObject* MUnit = axobject->querySubObject("MUnit(const QString&)", test);) в справке его описывают так MUnit(BSTR ID) возвращает интерфейс  IMUnit. Получив интерфейс я пытаюсь получить интересующее меня свойство Designation делая я это так (QString data = MUnit->dynamicCall("Designation").toString();) в описании справки написано возвращаемый тип BSTR входных параметров нет. На VBS все получается нормально и данные возвращаются но мой код всегда возвращает пустые данные.
Подскажите пожалуйста может я делаю что то не так?


Название: Re: Работа с COM объектом
Отправлено: ViTech от Апрель 21, 2017, 13:32
С QAxObject совсем не работал, но если необходимо обратиться к свойству, то может это надо делать через MUnit->property("Designation").toString() делать? Подробнее в QAxBase Detailed Description (http://doc.qt.io/qt-5/qaxbase.html#details) написано.


Название: Re: Работа с COM объектом
Отправлено: Snak2013 от Апрель 21, 2017, 16:52
Спасибо помогло