判断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();
}
相关推荐
Amumu12138几秒前
Js:ES6~ES11基础语法(一)
开发语言·前端·javascript
m0_569881471 分钟前
跨语言调用C++接口
开发语言·c++·算法
zdl6862 分钟前
搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程
开发语言·后端·golang
LilySesy32 分钟前
【与AI+】英语day1——ABAP基础与数据类型
开发语言·ai·sap·abap
你不是我我35 分钟前
【Java 开发日记】我们来说一下 b+ 树与 b 树的区别
java·开发语言
2501_9249526942 分钟前
C++中的过滤器模式
开发语言·c++·算法
左左右右左右摇晃42 分钟前
Java笔记——IO
java·开发语言·笔记
2401_8732046543 分钟前
C++中的组合模式实战
开发语言·c++·算法
twc82944 分钟前
Query 改写 大模型测试的数据倍增器
开发语言·人工智能·python·rag·大模型测试
Byron__1 小时前
HashSet/LinkedHashSet/TreeSet 原理深度解析
java·开发语言