Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Создать COM-объект

Автор: kasa 17.3.2009, 18:03

Здравствуйте!

Совсем недавно начал изучать Qt4. Возник вопрос.
А можно ли как-то средствами Qt создать экземпляр COM-объекта? Что-то в документации ничего не нашел, только про ActiveX.
Однако, мне необходимо создать обычный COM-объект, который, к тому же, не поддерживает дуальный интерфейс IDispatch.
В смысле, мне нужно создать экземпляр готового COM-объекта и вызвать пару его методов...

Спасибо.

Автор: kuler 17.3.2009, 19:18

обертка над оберткой? какие функции то нужны?

Автор: kasa 18.3.2009, 1:11

Цитата(kuler @ 17.3.2009, 23:18) *
обертка над оберткой? какие функции то нужны?

Почему обертка? У меня есть готовый COM-объект, даже DCOM. Это работающее приложение.
Мне нужно из программы на Qt вызвать методы этого объекта...

Автор: kuler 18.3.2009, 11:13

Цитата(kasa @ 18.3.2009, 1:11) *
Мне нужно из программы на Qt вызвать методы этого объекта..

ну и не вижу где проблема

Автор: ViGOur 18.3.2009, 11:27

kuler, ты опиши в "2 словах" как это сделать, если бы kasa понимал как это сделать, то думаю не спрашивал бы.

Автор: kuler 18.3.2009, 12:10

Interface* i;
CoCreateInstance(...., &i);
i->method();

Автор: kasa 18.3.2009, 15:08

Цитата(kuler @ 18.3.2009, 16:10) *
Interface* i;
CoCreateInstance(...., &i);
i->method();


Ну ясно. Я, в общем-то, хотел узнать, ессесно, как это сделать средсвами Qt, а не WinAPI.
Просто подумал, раз уж они сделали поддержку ActiveX, то и с этим че-нить тоже есть.
Чтобы, так сказать, все было в одном стиле без подключений всяких левых заголовков и т.п.

Хотя, с другой стороны, может оно и нафиг не надо...

Автор: kwisp 18.3.2009, 15:53

Цитата(kasa @ 18.3.2009, 15:08) *
Я, в общем-то, хотел узнать, ессесно, как это сделать средсвами Qt

я работал с браузером(експлоер конечно же) черз QAxContaner.
вот как было:
наследовался от QAxContaner в конструкторе писал
 
this->setControl("{8856f961-340a-11d0-a96b-00c04fd705a2}");//номер проги из реестра в программе

для вызова функции в 3 версии было
this->dynamicCall("имя метода()",QVariant,...аргументы)


в 4 не знаю. надо читать QAxContaner в ассистенте http://doc.crossplatform.ru/qt/4.4.3/qaxcontainer.html
в 3 можно было справку по доступным функция ком объекта получить в виде строки в которой html страничка через функцию.:)

Автор: kuler 18.3.2009, 16:20

kwisp, но это кросскод или под винду?

Автор: kwisp 18.3.2009, 16:27

kuler,
под винду. сейчас есть вебкит и мне уже не нужен виндовый браузер.
а что есть активХ компоненты не под винду?

Автор: kuler 18.3.2009, 17:00

Цитата(kwisp @ 18.3.2009, 16:27) *
а что есть активХ компоненты не под винду?

это я к тому что основное назначение qt - это создание кросс, соответственно если прикладуха делается не кросс, то нет особого смысла искать какието функции именно в qt, можно прекрасно все мешать в одну кучу

Автор: kwisp 18.3.2009, 17:30

kuler,
однако средства трольтеки разработали именно для того чтоб можно было не мешать.
это уже вопрос другой темы:)
сам не пойму почему:)

Автор: kasa 18.3.2009, 19:50

Цитата(kuler @ 18.3.2009, 21:00) *
Цитата(kwisp @ 18.3.2009, 16:27) *
а что есть активХ компоненты не под винду?

это я к тому что основное назначение qt - это создание кросс, соответственно если прикладуха делается не кросс, то нет особого смысла искать какието функции именно в qt, можно прекрасно все мешать в одну кучу


Смысл лично для меня был в единообразии кода, больше ничего. Я понимаю, что кросс-приложение не написать используя COM.
Однако, юзанье QAx... тоже лишает код кроссплатформенности, но оно реализовано.

Автор: kuler 19.3.2009, 10:48

Цитата(kasa @ 18.3.2009, 19:50) *
был в единообразии кода

а код будет единообразным - с++

Автор: trdm 19.3.2009, 12:42

Цитата(kasa @ 18.3.2009, 19:50) *
Смысл лично для меня был в единообразии кода, больше ничего. Я понимаю, что кросс-приложение не написать используя COM.
Однако, юзанье QAx... тоже лишает код кроссплатформенности, но оно реализовано.

И что?
Было бы гораздо хуже, если таковой возможности (интеграции с COM) не было бы вообще.

Автор: kasa 19.3.2009, 16:48

Цитата(kuler @ 19.3.2009, 14:48) *
Цитата(kasa @ 18.3.2009, 19:50) *
был в единообразии кода

а код будет единообразным - с++


А причем тут С++ вообще? Есть Qt - нормальная объектная библиотека, а есть убогий WinAPI, который к языку программирования вообще никакого отношения не имеет...

Автор: kuler 19.3.2009, 17:43

Цитата(kasa @ 19.3.2009, 16:48) *
Есть Qt - нормальная объектная библиотека

qt - это обертка над апи, а над ком там особо и нечего обертывать

Автор: Litkevich Yuriy 19.3.2009, 18:03

Цитата(kuler @ 19.3.2009, 20:43) *
qt - это обертка над апи
нет, Qt самостоятельно рисует окошки и многое далеат сама, хотя и пользуется некоторыми ОСькиными вещами.

На этом треп в этой теме закончим.
Если хочется потрепатся - добро пожаловать в форум http://www.forum.crossplatform.ru/index.php?showforum=17

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)