QT防止同一程序多开
感觉会用到,先记录一下
在QT编程中,希望不允许同一程序打开多个,可创建QSharedMemory共享内存段,通过访问和释放,判断是否已存在,从而判断程序是否已打开,在main函数中加入如下代码即可.
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//
const char* __application_id = "_PROGRAM_RUNNING_FLAG";
QSharedMemory singleApp(__application_id);
if (singleApp.attach())
{
// Attempt to release leaked memory
singleApp.detach();
if (singleApp.attach())
{
QMessageBox::warning(nullptr, "Warning",
"A same application has been running.");
return 0;
}
}
singleApp.create(1);
//
Test w;
w.show();
return a.exec();
}