判断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();
}
相关推荐
Ulyanov2 小时前
高保真单脉冲雷达导引头回波生成:Python建模与实践
开发语言·python·仿真·系统设计·单脉冲雷达
阿猿收手吧!3 小时前
【C++】jthread:优雅终止线程新方案
开发语言·c++
lly2024063 小时前
《JavaScript 实例》
开发语言
十五年专注C++开发3 小时前
C++中各平台表示Debug的宏
开发语言·c++·debug
张小凡vip3 小时前
Python异步编程实战:基于async/await的高并发实现
开发语言·python
玩c#的小杜同学3 小时前
源代码保卫战:给C# 程序(混淆、加壳与反逆向实战)
开发语言·笔记·c#
阿猿收手吧!5 小时前
【C++】Ranges:彻底改变STL编程方式
开发语言·c++
云游云记5 小时前
php 随机红包数生成
开发语言·php·随机红包
程序员林北北5 小时前
【前端进阶之旅】JavaScript 一些常用的简写技巧
开发语言·前端·javascript
gAlAxy...6 小时前
MyBatis-Plus 核心 CRUD 操作全解析:BaseMapper 与通用 Service 实战
java·开发语言·mybatis