QT 实现软件只能运行一个软件:
QString strAppName = "Your program";
QSystemSemaphore sema(strAppName,1,QSystemSemaphore::Open);
sema.acquire();
QSharedMemory mem("SystemObject");
if (!mem.create(1))
{
//软件已运行,直接提示并退出当前的软件运行
//QMessageBox::information(0, "",QString("%1 %2").arg(strAppName).arg(QObject::tr("is running")));
QMessageBox message(QMessageBox::Information,"",QString("%1 %2").arg(strAppName).arg(QObject::tr("is running")));
//message.setWindowIcon(QPixmap(QString("%1.png").arg(strAppName)));
message.setWindowFlags(Qt::Drawer);
message.setWindowIcon(QPixmap(QString("%1.png").arg(strAppName)));
message.exec();
sema.release();
return 0;
}
sema.release();