判断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();
}
相关推荐
超级无敌大学霸4 分钟前
c语言算术转换及表达式解析
c语言·开发语言
努力学习的小廉9 分钟前
【QT(八)】—— 常用控件(五)
开发语言·qt
期待のcode10 分钟前
Java虚拟机的垃圾回收器
java·开发语言·jvm·算法
星火开发设计13 分钟前
C++ 分支结构:if-else 与 switch-case 的用法与区别
开发语言·c++·学习·算法·switch·知识·分支
qq_4061761416 分钟前
深耕JS防抖与节流:从原理到工程化实践的全方位指南
开发语言·php
2301_7973122620 分钟前
学习Java40天
java·开发语言·学习
Two_brushes.22 分钟前
C++ 常见特殊类的设计(含有单例模式)
开发语言·c++
不会c嘎嘎22 分钟前
QT -- 窗口
开发语言·qt
LawrenceLan24 分钟前
Flutter 零基础入门(二十一):Container、Padding、Margin 与装饰
开发语言·前端·flutter·dart
lsx20240629 分钟前
C++ 注释
开发语言