Files
RRJServer/ProgramServerMTD/main.cpp
2026-02-04 15:32:57 +03:00

52 lines
1.9 KiB
C++

#include "mainwindow.h"
#include <QApplication>
//#include <QMessageBox>
#include <QTranslator>
#include "specialmessagebox.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// Уникальное имя для идентификации процесса
const QString sharedMemKey = "ServerMTD_sharedMemKey";
// Создание объекта общей памяти
QSharedMemory sharedMemory(sharedMemKey);
// Попытка прикрепления к существующему сегменту
bool isRunningAlready = false;
if (sharedMemory.attach(QSharedMemory::ReadWrite))
{
qWarning() << "App ServerMTD is running already!";
QTranslator qtLanguageTranslator;
qtLanguageTranslator.load(QString("translations/RRJServer_") + "ru_RU", ".");
qApp->installTranslator(&qtLanguageTranslator);
//QMessageBox::critical(nullptr, QObject::tr("Error"), QObject::tr("App ServerMTD is running already!"));
SpecMsgBox::CriticalClose(nullptr, QObject::tr("App ") + QObject::tr("Maintenance training device RRJ-95NEW-100 Server") + QObject::tr(" is running already!"));
isRunningAlready = true;
} else
{
// Приложения ещё нет, создаём сегмент памяти
if (!sharedMemory.create(1))
{
qCritical() << "Error create shared memory!";
return 1;
}
}
if (isRunningAlready)
return 1;
// Освобождаем общую память при завершении работы приложения
QObject::connect(qApp, &QCoreApplication::aboutToQuit,
[&]() { sharedMemory.detach(); });
MainWindow w;
w.show(); //Закоментировать, если нужно, чтобы по-умолчанию было свернуто в трее!
return a.exec();
}