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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подключение к Qt-программе из другого приложения. Как???  (Прочитано 5814 раз)
alex12
Гость
« : Сентябрь 08, 2009, 16:44 »

Помогите, пожалуйста!

Мне нужно подключаться к работающей Qt-программе из другого Windows-приложения (Excel-макрос).

Правильно ли я понимаю, что для этого в Windows предназначена технология COM? Она же ActiveX когда речь идет об окнах, а не только передаче данных.

Классический ActiveX компонент - это DLL-ка. Ее надо прописывать в реестре, и тогда любое приложение сможет
по его {01234567-89AB-CDEF-0123-456789ABCDEF} загрузить dll-ку и создать окно.

Но мне такое не нужно. Мне нужно просто уметь обращаться к уже запущенному приложению и вызывать его функции.

Изучив документацию, я нашел такую статическую функцию:
QAxFactory::registerActiveObject ( QObject * object )

Вроде это именно то, что надо. Но никак не могу заставить ее работать (QAxFactory:startServer() делаю).

Может кто сталкивался с такой задачкой? Может быть есть какие-то средства отладки COM? Может я вообще все не так понимаю? Можно ли использовать COM не регистрируя ключик в реестре? А может вообще есть способ проще?

Заранее спасибо.
« Последнее редактирование: Сентябрь 08, 2009, 20:48 от alex12 » Записан
SLiDER
Гость
« Ответ #1 : Сентябрь 08, 2009, 21:15 »

А программа к которой "нужно подключаться" вообще имеет хоть какие-то интерфейсы взаимодействия с внешним миром, кроме GUI конечно же. Ведь именно от ответа на этот вопрос зависит сможете ли Вы "обращаться к уже запущенному приложению и вызывать его функции". И в принципе COM and etc тут совсем не причем. Существует масса способов организации IPC (inter process communication) и DCOM (именнно Distributed COM) не самый (imho) лучший из  них, но все они подразумевают что интерфейс взаимодействи поддерживается обеими сторонами. Например в составе Qt идет биндинг к популярной ныне в nix-системах IPC DBus (QDbus).
Записан
alex12
Гость
« Ответ #2 : Сентябрь 09, 2009, 01:34 »

Ситуация такая: на Qt написан клиент к MySQL базе данных. Кроме GUI и обращений к БД в нем ничего нет. Еще есть набор макросов для Excel, в которых реализована недостающая в клиенте функциональность. В целом такая архитектура выглядит совсем глупо, но так уж получилось исторически. Переписывать все на Qt у меня нет сил.

Поэтому задача простая - подружить Excel макросы с GUI приложением на Qt. Все под Windows и DBus, к сожалению, тут не пройдет. А какие IPC кроме DCOM может поддерживать и Qt и Excel? Может есть какая-то сторонняя библиотека?
Записан
SABROG
Гость
« Ответ #3 : Сентябрь 09, 2009, 11:05 »

Переписывать все на Qt у меня нет сил.

Напиши лишь код, который будет генерить .csv файл с данными из БД, открывай этот файл макросом из Excel и строй графики или что там у тебя. А вообще, если бы был сервер MSSQL, то макросы Excel могут делать запросы к БД. Возможно такое может прокатить с ODBC драйвером MySQL, тогда Qt вообще не нужен будет.
Записан
SLiDER
Гость
« Ответ #4 : Сентябрь 09, 2009, 22:49 »

Ситуация такая: на Qt написан клиент к MySQL базе данных. Кроме GUI и обращений к БД в нем ничего нет. Еще есть набор макросов для Excel, в которых реализована недостающая в клиенте функциональность. В целом такая архитектура выглядит совсем глупо, но так уж получилось исторически. Переписывать все на Qt у меня нет сил.

Поэтому задача простая - подружить Excel макросы с GUI приложением на Qt. Все под Windows и DBus, к сожалению, тут не пройдет. А какие IPC кроме DCOM может поддерживать и Qt и Excel? Может есть какая-то сторонняя библиотека?

Если Вы совсем не хотите/не можете переписывать/дописывать Qt приложение то дело труба. В макросах Exсel я полный ноль, поэтому что они могут я не знаю, а вот что приложение, которое изначально не расчитана на IPC, само ни с каким нибудь IPC не заработает, даже с DBus. Разнообразных IPC довольно много, да и DBus при некоторых стараниях под виндой работает весьма не плохо, однако, как Вам уже посоветовали выше, проще сохранять данные в какой-нибудь известный Excel-ю формат и уж дальше работать с этими файлами, кода точно писать меньше нужно будет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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