From 0d9643c3c1572cd4668aec6d38511c01d4d2e3eb Mon Sep 17 00:00:00 2001 From: krivoshein Date: Wed, 4 Feb 2026 15:32:57 +0300 Subject: [PATCH] App is running already --- ProgramServerMTD/CMakeLists.txt | 6 ++ ProgramServerMTD/main.cpp | 40 +++++++++++++ translations/RRJServer_ru_RU.qm | Bin 34371 -> 34786 bytes translations/RRJServer_ru_RU.ts | 101 ++++++++++++++++++++------------ 4 files changed, 108 insertions(+), 39 deletions(-) diff --git a/ProgramServerMTD/CMakeLists.txt b/ProgramServerMTD/CMakeLists.txt index a8c2a74..cbd2254 100644 --- a/ProgramServerMTD/CMakeLists.txt +++ b/ProgramServerMTD/CMakeLists.txt @@ -51,3 +51,9 @@ target_include_directories(ServerMTD PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../LibIn target_include_directories(ServerMTD PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../LibInstructorsAndTrainees/tasks) target_include_directories(ServerMTD PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../LibInstructorsAndTrainees/widgets) target_include_directories(ServerMTD PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../LibInstructorsAndTrainees/specialmessagebox) +if(PROJECT_TYPE_DEBUG) + target_link_directories(ServerMTD PUBLIC ${REPO_PATH}/BUILDS/Debug64/LibInstructorsAndTrainees) +else() + target_link_directories(ServerMTD PUBLIC ${REPO_PATH}/BUILDS/Release64/LibInstructorsAndTrainees) +endif() +target_link_libraries(ServerMTD PRIVATE libInstructorsAndTrainees.dll) diff --git a/ProgramServerMTD/main.cpp b/ProgramServerMTD/main.cpp index 231509a..6240721 100644 --- a/ProgramServerMTD/main.cpp +++ b/ProgramServerMTD/main.cpp @@ -1,10 +1,50 @@ #include "mainwindow.h" #include +//#include +#include +#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(); diff --git a/translations/RRJServer_ru_RU.qm b/translations/RRJServer_ru_RU.qm index 76bba9dc53b84b34fc9ee90da1a181ac3c852786..b64d0f9121dadab1ae2342c8af021b5f69e1d8b2 100644 GIT binary patch delta 1146 zcmZXTeN0BqfD&BZm?S$b z!qgD|*+=kXBU_d@jLaFG$ugsxOSdU9hh|IsnEPjSacE*<7M+nO8i_}4)J6Ze=a+lW zInVn%@0&Zlo7~t(EH$Ts1t0%#c>g8a%5zKc+=;gZ&g+SN+I)^?39?SCg3p$5>2iiUY#0B7)X`p<&&cq~FLS~33{?a!ns+tx$#0+5nXWXCb>#rDJo9ef6p#Oc&bkrvOEdZ0dOIsKO|IGznvQtu(jkzU3_zsjC9yNU-6O5;fz&_5>~d;S~Xo=WN1p%1zL8R^12&lNJUD`qzd zO)!gCN`kelRvaN(4alAFY<*o?G=q>r-m)_YINxpV$} z2Q8xIbPL@^9n?u{Xd~UgGLNq)t%c3ZbHT`;``Wq{IidO@QALqcK27$if$m6B3EJ4L zzQX$A|4TsTk`Hppja>A0se=DXsY-wBZzU!~-x=LZSJ8*5n^yAG!41_=2V}HDfr{kP z>OmW}E>&<*CubEuw~5z#^sid{^uNY!b@8~|s;Egt^|Wo3BbuxZMx&8vSoZa)iZ3{1 xGx2z)CtCbHN+6NL|6Z)VgQt0fKE#_+O&$NVz)-KMG4;07?D%l_q&2o?`JchcJ30UW delta 830 zcmXBSZAjBW90&04ZvQ>~B_A?VW|porRGewJ9wHL^?#dl8WYtp`mABGk~zK#fou=1W6YVW%PD15eGrhhom-O*9Cfqt z1h=Lh$aoH@R)JIFKujjrt^umpyhkM0aRF##_3S-d$5-d~)(Ddv!rLprnGvqNmRsZE z)-6F6(gB$EQkUcosVJoe5=QK))IqeQ@;B`zDWpP6*N9$I?JYT0whm-@O7aP7w9UXx zo{?0Duh|xPv{-7)v91w=VHAjpB=?46fHFCm@jC~YJIVWKf8gXg`MBd15Hu{+XuMgL zA5!B(GhpwP7A6~k{Zmp?`x4-5lv?!hK-^2It@IC2+)YCTox1vw5N)~($QK1&*8mWH zUog`g;Pf(e2w|jZm39hxQWQ+*1#OOPQW&z&13vY_sOSkK4GCj2tw3$8FiF^ARk<+L zmH-&~xV8wvJ#~q_&Y&!=jYaiNmBqQAu-jXZB|Uxv9M^KKb+lY&BxTKXno&MaqvTsR znlt48Hx++z9f>qou2oxy6}I*dfY)bkO01&C#ClgYQkUEmTd<;RO0ff(^W206<+W$NK+QXPP|@X8GRLmQmaDSN0yq>%*A%+gYKQ9E?Iu83%e=*Y zUn94wPYl=>45UwU3wyW~E?TVAisnFZSG^DG7)m>pI*nB=I;%ri<|47X`3taVx7dB- zDLb!ToLFHwiZ0U?WjrYkpmC}&QfQ{Rss>UyLftAYvBc92Vmz_bQG=L8O46w7-)NA| fi$}=Wo%EA>bN^wFxdQsr@_?q*=l2g;!~OpP|2F>X diff --git a/translations/RRJServer_ru_RU.ts b/translations/RRJServer_ru_RU.ts index 80300cd..0c7d139 100644 --- a/translations/RRJServer_ru_RU.ts +++ b/translations/RRJServer_ru_RU.ts @@ -1304,100 +1304,100 @@ Delete it anyway? - + none нет - + The file could not be opened Файл не может быть открыт - + Instructor authorization. Авторизация инструктора. - + Instructor deauthorization Деавторизация инструктора - + Error! Ошибка! - + Server blocked! Сервер заблокирован! - + Instructor authorization is temporarily unavailable. Авторизация инструктора временно недоступна. - + Try again later. Попробуйте позже. - + Database error! Ошибка базы данных! - + The user is archived! Пользователь является архивным! - + The user is already logged in! Пользователь уже в сети! - + Login or password error! Ошибка логина или пароля! - + The server is not available! Сервер недоступен! - + Connection attempt Попытка соединения - - + + connected подключен - + blocked заблокирован - + not connected не подключен - + Server settings have been changed. Please reconnect to the server. Настройки сервера были изменены. Пожалуйста, переподключитесь к серверу. - + Instructor authorization Авторизация инструктора @@ -1638,26 +1638,49 @@ Please reconnect to the server. FIM + + + The trainee was removed! + Обучаемый удален! + + + + The trainee was archived! + Обучаемый заархивирован! + + + + QObject + + + Error + Ошибка + + + + App ServerMTD is running already! + Программа ServerMTD уже запущена! + RecognizeSystem - + The file could not be opened Файл не может быть открыт - + You cannot delete the basic version! Вы не можете удалить базовую версию! - + You cannot delete the active version Вы не можете удалить активную версию - + This name already exists Это имя уже существует @@ -1750,76 +1773,76 @@ Please reconnect to the server. Ошибка PostgreSQL! - + Server is started! Сервер запущен! - + Server is stoped! Сервер остановлен! - + Settings file could not be opened: Файл настроек не открыт: - + Database settings have been changed. The server will be restarted. Настройки Базы Данных были изменены. Сервер будет перезапущен. - + The file could not be opened Файл не может быть открыт - - + + Database connection error! Ошибка подключения Базы данных! - + Database connection OK! База данных подключена! - + started запущен - + locked заблокирован - + stoped остановлен - + connected подключена - + not connected не подключен - + No Client files found! Файлы клиента не найдены! - + * check Application for the presence of a folder with a build * check SharedData for a folder with the base version and the name base * проверьте Application на наличие папки со сборкой