QT 5.5. Почему при завершении ActiveX закрывается приложение?

Имеем программу написанную на QT 5.5. В режиме приложения работает на отлично, в режиме COM сервера работает отлично. Но если нам необходимо подключиться к уже запущеному приложению через ActiveX и провести какие-либо операции(например чтение переменной), то после завершения выполнения скрипта, сборщик мусора windows унесет с собой и приложение. Как с этим бороться?
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include "server.h"
#include "scales.h"
#include <QAxFactory>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    scales appobject(0);


    QAxFactory::startServer();
    QAxFactory::registerActiveObject(&appobject);


    return a.exec();
}


scales.h
#ifndef SCALES_H
#define SCALES_H
#include <QAxFactory>
#include "server.h"


class scales: public QObject
{
    Q_OBJECT

    Q_CLASSINFO("ClassID", "{2b5775cd-72c2-43da-bc3b-b0e8d1e1cdf2}")
    Q_CLASSINFO("InterfaceID", "{2ce1761e-07a3-415c-bd11-b0e8d1e1cdf2}")
    Q_CLASSINFO("EventID","{52e8e1eb-ccee-4ae6-9b86-c82d11f606d1}")
    Q_PROPERTY(QString num READ num)
public:
    scales(QObject *parent = 0);
    QString num()  {  return "greate";}
};

#endif // SCALES_H


scales.cpp
#include "scales.h"

scales::scales(QObject *parent): QObject(parent)
{

}

QAXFACTORY_BEGIN("{edd3e836-f537-4c6f-be7d-6014c155cc7a}", "{b7da3de8-83bb-4bbe-9ab7-99a05819e201}")
   QAXCLASS(scales)
QAXFACTORY_END()
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
@jetexe Автор вопроса
Побороть не удалось, перешл на сокеты
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы