判断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();
}
相关推荐
爱喝水的鱼丶14 小时前
SAP-ABAP:变量、常量、结构与内表声明(10篇博客合集) 第六篇:ABAP 7.40+新特性:声明语法的简化写法与兼容注意事项
运维·服务器·开发语言·学习·算法·sap·abap
上海合宙LuatOS14 小时前
Air8000低功耗指南
开发语言·物联网·php·lua
happymaker062615 小时前
SpringBoot使用Thymeleaf模板引擎,前端的基本语法
开发语言·python
01_ice15 小时前
Java抽象类和接口
java·开发语言
代钦塔拉15 小时前
Qt QThread最标准Worker线程用法(零崩溃、零内存泄漏)
qt
小糯米60115 小时前
C语言 自定义类型:结构体 与 联合体
c语言·开发语言·数据结构
jieyucx15 小时前
Go 语言 JSON 序列化与反序列化
开发语言·golang·json·序列化
罗超驿15 小时前
6.Java多线程详解:Thread类、线程属性与start()方法深度解析
java·开发语言·面试·java-ee
海的透彻15 小时前
jmeter预制处理器JSR223-加解密
开发语言·jmeter·sm2·jsr233
asyxchenchong88815 小时前
R+VIC 模型融合实践技术应用及未来气候变化模型预测
开发语言·r语言