判断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();
}
相关推荐
free-elcmacom4 分钟前
Python信号分析项目:高速数字系统的眼图破案记
开发语言·python
小毅&Nora6 分钟前
【后端】【JAVA】协程:从虚拟线程到协程编程的全面解析
java·开发语言
A charmer8 分钟前
内存泄漏、死锁:定位排查工具+解决方案(C/C++ 实战指南)
c语言·开发语言·c++
没事多睡觉6669 分钟前
JavaScript 中 this 指向教程
开发语言·前端·javascript
wjs202410 分钟前
HTML 基础
开发语言
pilaf199015 分钟前
Rust练习题
开发语言·后端·rust
asdfg125896317 分钟前
replace(/,/g, ‘‘);/\B(?=(\d{3})+(?!\d))/;千分位分隔
开发语言·前端·javascript
透明的玻璃杯18 分钟前
VS2015 调用QT5.9.9 的库文件 需要设置QT库的路径
开发语言·qt
GoldenSpider.AI18 分钟前
uv——极速、统一的Python包和项目管理器
开发语言·python·uv
无限进步_18 分钟前
C++初始化列表详解:语法、规则与最佳实践
java·开发语言·数据库·c++·git·github·visual studio