QT/C++ 程序启动时检查程序是否已经启动
2026/6/6 13:51:47 网站建设 项目流程

关键词:QT程序重复启动检查

使用场景:不建议程序被多次启动的情况:例如程序启动后连接了某些设备,而操作用户没注意到程序已经启动了,又打开了一次程序,然后出现连接被占用等问题。

代码实现:

可以在QT项目的main.cpp中实现

#include <QApplication> #include <QSharedMemory> #include <QMessageBox> #include <QWidget> bool checkSingleInstance() { static QSharedMemory sharedMemory; // 设置唯一的key sharedMemory.setKey("MyAppSingleInstanceKey"); if (sharedMemory.attach()) { // 已经附加到现有内存,说明已有实例运行 return false; } // 创建共享内存段 if (!sharedMemory.create(1)) { QMessageBox::critical(nullptr, "错误", "无法创建共享内存段,可能是权限问题。"); return false; } // 确保程序退出时释放共享内存 QObject::connect(qApp, &QCoreApplication::aboutToQuit, []() { QSharedMemory().setKey("MyAppSingleInstanceKey"); }); return true; } int main(int argc, char *argv[]) { QApplication app(argc, argv); //插入检查函数 if (!checkSingleInstance()) { QMessageBox::warning(nullptr, "警告", "程序已经在运行中!"); return 0; } // 正常启动程序 QWidget window; window.show(); return app.exec(); }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询