判断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();
}
相关推荐
秋田君11 分钟前
QT_HTTP协议编程
qt·http·iphone
ttwosix12 分钟前
JavaEE初阶 多线程:单例模式 | 阻塞队列
java·开发语言
独立开发之道13 分钟前
【Three.js教程】 图元速查:官方内置的立体图形
开发语言·javascript·ecmascript
Htr_15 分钟前
Python面向对象编程:类与对象基础
开发语言·python
RD_daoyi16 分钟前
谷歌改写了76%的标题:超60字符的,95%会被谷歌自己重写
大数据·服务器·开发语言·前端·搜索引擎·html
weixin_3077791317 分钟前
AI生成代码的隐患与治理:人工审查流程及提示词驱动的修复策略
开发语言·人工智能·算法
Java后端的Ai之路21 分钟前
09、Python组合模式
开发语言·人工智能·python·docker·组合模式
码农客栈22 分钟前
Qt 打包为可执行文件发布
qt
Escalating_xu27 分钟前
【C++入门基础(上)】从发展历程、学习路线到命名空间与输入输出
开发语言·c++
jimy129 分钟前
C++ 中的rValue的判断---是否能“隐式移动”
开发语言·c++