Russian Qt Forum
Ноябрь 22, 2024, 10:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с COM объектом  (Прочитано 2333 раз)
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 все получается нормально и данные возвращаются но мой код всегда возвращает пустые данные.
Подскажите пожалуйста может я делаю что то не так?
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #1 : Апрель 21, 2017, 13:32 »

С QAxObject совсем не работал, но если необходимо обратиться к свойству, то может это надо делать через MUnit->property("Designation").toString() делать? Подробнее в QAxBase Detailed Description написано.
Записан

Пока сам не сделаешь...
Snak2013
Гость
« Ответ #2 : Апрель 21, 2017, 16:52 »

Спасибо помогло
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.116 секунд. Запросов: 23.