当前位置: 首页 > article >正文

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();
}

http://www.kler.cn/a/506676.html

相关文章:

  • 怎么在iPhone手机上使用便签进行记录?
  • 深度学习图像算法中的网络架构:Backbone、Neck 和 Head 详解
  • Unity搭配VS Code使用
  • 告别 Excel,拥抱 R 语言:开启数据分析新时代
  • 【leetcode21】344.反转字符串
  • 1. npm 常用命令详解
  • Java学习教程,从入门到精通,JDBC数据库连接语法知识点及案例代码(92)
  • Outlook 无网络连接[2604] 错误解决办法
  • python批量doc转pdf调用提示库未注册
  • 华北水利水电大学第十届ACM/ICPC程序设计新生赛题解
  • Django Admin 实战:实现 ECS 集群批量同步功能
  • 【6】Word:海名公司文秘❗
  • SuperMap iClient3D for Cesium立体地图选中+下钻特效
  • 【Docker】使用Dev Container进行开发
  • HTML 中的 Window 和 Document 介绍
  • 【Uniapp-Vue3】manifest.json配置
  • 前后端分离开发心得
  • 十分钟带汝入门大数据开发语言Scala
  • 序列化和反序列化 Json 字符串 @JSONField
  • XML在线格式化 - 加菲工具
  • Flurl:一个Star 3.9K的链式RESTful风格HTTP开源.Net库
  • 【Linux】13.Linux进程概念(2)
  • OSPF的LSA的学习研究
  • leetcode 3095. 或值至少 K 的最短子数组 I
  • PHP xml 常用函数整理
  • Web前端------HTML表格