判断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();
}
相关推荐
橙露3 分钟前
C#在视觉检测中的优势:工业智能化转型的利器
开发语言·c#·视觉检测
醇氧4 分钟前
java.lang.NumberFormatException: For input string: ““
java·开发语言·spring
利刃大大8 分钟前
【ES6】变量与常量 && 模板字符串 && 对象 && 解构赋值 && 箭头函数 && 数组 && 扩展运算符 && Promise/Await/Async
开发语言·前端·javascript·es6
大猫会长13 分钟前
postgreSQL中,RLS的using与with check
开发语言·前端·javascript
老蒋每日coding26 分钟前
Python:数字时代的“万能钥匙”
开发语言·python
洛豳枭薰34 分钟前
jvm运行时数据区& Java 内存模型
java·开发语言·jvm
lsx20240639 分钟前
Perl 错误处理
开发语言
甄心爱学习41 分钟前
KMP算法(小白理解)
开发语言·python·算法
zephyr051 小时前
C++ STL unordered_set 与 unordered_map 完全指南
开发语言·数据结构·c++
一只小bit1 小时前
Qt 事件:覆盖介绍、处理、各种类型及运用全详解
前端·c++·qt·cpp