判断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();
}
相关推荐
杨福瑞12 小时前
C语⾔内存函数
c语言·开发语言
eqwaak012 小时前
科技信息差(9.12)
开发语言·python·科技·量子计算
axban12 小时前
QT M/V架构开发实战:QStringListModel介绍
开发语言·数据库·qt
刘媚-海外12 小时前
Go语言开发AI应用
开发语言·人工智能·golang·go
勇敢牛牛_13 小时前
使用Rust实现服务配置/注册中心
开发语言·后端·rust·注册中心·配置中心
catchadmin13 小时前
PHP serialize 序列化完全指南
android·开发语言·php
hzzzzzo013 小时前
微服务网关全解析:从入门到实践
java·开发语言·微服务
slandarer13 小时前
MATLAB | 这是屎吗?抱歉打错了,这是什么?
开发语言·matlab
We....13 小时前
Java多线程分块下载文件
java·开发语言
doll ~CJ13 小时前
基于QVTKOpenGLNativeWidget的三维点云可视化实现
c++·qt·软件开发·三维点云可视化