判断QT程序是否重复运行

打开exe,再次打开进行提示。

main.cpp添加:

复制代码
#include "QtFilePreview.h"
#include <QtWidgets/QApplication>
#include <windows.h>
#include <qmessagebox.h>
#pragma execution_character_set("utf-8")


bool CheckRun()
{
    //  创建互斥量
    HANDLE m_hMutex = CreateMutex(NULL, FALSE, L"onlyone");
    //  检查错误代码
    if (GetLastError() == ERROR_ALREADY_EXISTS) {
        //  如果已有互斥量存在则释放句柄并复位互斥量
        CloseHandle(m_hMutex);
        m_hMutex = NULL;
        //  程序退出
        return  false;
    }
    else
        return true;
}


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    if (CheckRun() == false)
    {
        QMessageBox::information(nullptr,"tips","this program has already been run\n程序已经运行");
        return 0;
    }
    QtFilePreview w;
    w.show();
    return a.exec();
}
相关推荐
yongui4783412 小时前
MATLAB 使用遗传算法求解微电网优化配置数学模型
开发语言·matlab
郝学胜-神的一滴13 小时前
Python 抽象基类深度解析:从简易模拟到 abc 模块的优雅实践
开发语言·python·pycharm
Python伍六七13 小时前
给予Python开发的【16款高效办公自动化工具合集】,告别低效加班!
开发语言·python·自动化
rit843249913 小时前
基于博弈论的小区分簇算法MATLAB实现
开发语言·算法·matlab
怕什么真理无穷13 小时前
C++面试5_ TCP 粘包2(工业级)
开发语言·c++·tcp/ip
qingyulee13 小时前
python redis
开发语言·redis·python
努力努力再努力wz13 小时前
【MySQL 进阶系列】拒绝滥用root:从 mysql.user 到权限校验,带你彻底理解用户管理与授权机制!
android·c语言·开发语言·数据结构·数据库·c++·mysql
超梦dasgg13 小时前
智慧充电系统订单服务Java 实现方案
java·开发语言·微服务
装杯让你飞起来啊13 小时前
Kotlin List / Array 与 for 循环
开发语言·kotlin·list