Под виндой, чтобы не запускать более одного экземпляра приложения нужно сделать FindWindow и если такое окно есть, то делаем его активным, а новый экземпляр не запускаем.
Подобное можно сделать на Qt?
const char *NamedMutex = "ESPA Demon"; // именованный mutex
HANDLE CheckInstance( const char *Name)
{
HANDLE Mutex = CreateMutex(NULL,true,Name);
int r = GetLastError();
if (r) return 0;
return Mutex;
}
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HANDLE Mutex = CheckInstance(NamedMutex);
if (!Mutex)
{
ShowMessage(" Приложение уже запущено! ");
ReleaseMutex(Mutex);
return 1;
}
try
{
Application->Initialize();
Application->Title = "ESPA Demon";
Application->CreateForm(__classid(TFrmMain), &FrmMain);
Application->CreateForm(__classid(TFrmModBus), &FrmModBus);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}