Название: [РЕШЕНО]Создание и использование COM-объекта Отправлено: torwig от Декабрь 26, 2014, 17:49 Здравствуйте.
До этого писал код преимущественно под Убунтой, с технологией COM не встречался. Дано: SDK к определенному ПО, оформлено в виде .dll. Регистрирую в системе посредством regsrv32.exe, согласно инструкции производителя. С помощью QAxObject создаю обьект, получаю список его методов. Дальше нужно вызывать эти методы. И вот тут вот спотыкаюсь. Нужно создать обьект MSXML и передать его в метод. Как это сделать - пока не могу понять. По мануалу (Делфи): Создать XML_DOM := CreateOleObject('MSXML2.DOMDocument.3.0') as IXMLDOMDocument. Вызвать метод GetEvents (XML_DOM as IDispatch). Как нечто подобное сделать с помощью QAxObject? Может у кого есть опыт работы с технологией COM. Пока сижу, Гугл насилую :) п.с. Думал в Visual Studio сделать, но там остановился еще на этапе создания COM-обьекта из этой dll. Буду рад подсказкам и предложениям. Название: Re: Создание и использование COM-объекта Отправлено: Johnik от Декабрь 28, 2014, 00:06 http://doc.qt.io/qt-5/qaxbase.html
В разделе Detailed Description (http://doc.qt.io/qt-5/qaxbase.html#details) дан пример. Вам только нужно подставить свой <CLSID> (вы его привели в вопросе), и по аналогии со строкой: Код вызывать свои методы. Если не получится, покажите интерфейс класса "MSXML2.DOMDocument.3.0" Название: Re: Создание и использование COM-объекта Отправлено: torwig от Декабрь 29, 2014, 11:56 Удалось создать QAxObject("{88d96a05-f192-11d4-a65f-0040963251e5}"). (Msxm2l.DOMDocument.6.0)
Удалось вызвать с помощью dynamicCall методы loadXML() и save() для тестирования. Тут полный перечень методов: http://msdn.microsoft.com/en-us/library/ms757878(v=vs.85).aspx Но метод generateDocumentation() ничего не возвращает. Теперь мне нужно его передать в один из методов моего объекта, а именно в: Код: int GetEvents (IDispatch* AData) [slot] Передавать QString у меня получается, а вот как передать QAxObject? Название: Re: Создание и использование COM-объекта Отправлено: Johnik от Декабрь 29, 2014, 12:06 Все в том же разделе Detailed Description (http://doc.qt.io/qt-5/qaxbase.html#details), есть таблица соответствий параметров. Там есть:
Код: IDispatch* QAxObject* QAxBase::asVariant() QAxObject* (return value) Код
Название: Re: Создание и использование COM-объекта Отправлено: torwig от Декабрь 30, 2014, 13:30 Спасибо, Johnik, все получилось.
|