判断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();
}
相关推荐
mmsx39 分钟前
Android Dialog 插槽模式:用一套壳统一全应用的弹窗风格
android·java·dialog·开发语言
huanbailu43 分钟前
Qt 跨线程信号槽:connect 返回 true 但槽函数不执行的坑
开发语言·c++·qt·信号槽·跨线程·元类型
ZealSinger1 小时前
Go slog生产落地LevelVar与共存
开发语言·后端·golang·go
落魄实习生1 小时前
Agent Scope Java 2.x 系列【11】AgentState 与状态存储
java·开发语言·ai
HEJOO91 小时前
C++ 虚函数表(vtable)深度解析
开发语言·c++
老王爱玩车1 小时前
深入理解指针5
c语言·开发语言·学习
丹宇码农1 小时前
Go 与 Python 协程(Coroutine)对比演示项目
开发语言·python·golang
ttwuai1 小时前
Go开源后台管理系统推荐:3个官方仓库怎么按技术栈和适用边界比较?
开发语言·golang·开源
个 人 练 习 生2 小时前
C++-----string基本使用详解
开发语言·c++·学习
朝朝辞暮i2 小时前
C++ 第 5 课:else if + 多条件判断 + && / || / !
开发语言·c++