news 2026/3/21 11:20:05

QT/C++ 程序启动时检查程序是否已经启动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QT/C++ 程序启动时检查程序是否已经启动

关键词: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(); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 1:26:31

层合板多层损伤投影叠加后处理工具

一般我们做仿真&#xff0c;往往前处理工作占40%&#xff0c;后处理工作占40%。中间搞本构的时间反而没那么久。对于一些特殊仿真工况来说&#xff0c;尤其是模拟多工况&#xff0c;一些参数需要在不同工况之前传递。这可能需要同时用到前处理和后处理方法。除此之外&#xff0…

作者头像 李华
网站建设 2026/3/15 18:48:53

超实用 U 盘启动盘制作教程:2 种工具 + 详细步骤,小白也能上手

U 盘启动盘是电脑应急必备工具&#xff0c;不管是系统崩溃重装、丢失数据抢救&#xff0c;还是硬件故障排查&#xff0c;都能派上大用场。下面分享 2 款常用工具的制作方法&#xff0c;步骤精简易懂&#xff0c;新手也能快速掌握。 一、U 盘启动盘的核心作用 系统重装&#x…

作者头像 李华
网站建设 2026/3/14 12:52:37

R语言实现流动性覆盖率(LCR)动态监控(附完整代码)

第一章&#xff1a;流动性覆盖率&#xff08;LCR&#xff09;与金融风险管理流动性覆盖率&#xff08;Liquidity Coverage Ratio, LCR&#xff09;是巴塞尔协议III中引入的关键监管指标&#xff0c;旨在衡量金融机构在压力情景下能否依靠高流动性资产满足未来30天的净现金流出。…

作者头像 李华