自学内容网 自学内容网

Qt实现防止程序多次运行

单例化

可以通过QSharedMemory的特性实现应用程序单例化。

共享内存不能重复创建(Create)

#include <QApplication>
#include <QSharedMemory>
#include <QMessageBox>
#include <QDebug>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QSharedMemory sharedMemory("App.exe");

if (sharedMemory.create(1))
{
return a.exec();
}
else
{
qDebug()<<"Software is running!";
QMessageBox::information(0, "Clue", "Software is running!");
}
}

或者

#include <QApplication>
#include <QSharedMemory>
#include <QMessageBox>
#include <QDebug>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QSharedMemory *sharedMemory = new QSharedMemory(QString("App.exe"));

if (sharedMemory->create(1))
{
return a.exec();
}
else
{
qDebug()<<"Software is running!";
QMessageBox::information(0, "Clue", "Software is running!");
}

delete sharedMemory;
sharedMemory = NULL;
}

共享内存未创建不能Attach

#include <QApplication>
#include <QSharedMemory>
#include <QMessageBox>
#include <QDebug>

int main(int argc, char *argv[])
{
QSharedMemory shared("App.exe");
if(shared.attach(QSharedMemory::ReadOnly))//利用attach无法绑定未申请内存空间的特点判断该应用程序是否唯一
{
return 0;//结束程序运行
}
shared.create(1);//创建共享内存,空间大小为1字节

QApplication a(argc, argv);
return a.exec();
}

原文地址:https://blog.csdn.net/sinat_33896833/article/details/145174360

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!