判断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();
}
相关推荐
iCxhust2 分钟前
C#程序,窗体1向窗体2的textbox控件写入字符串“hello”
开发语言·c#
低客的黑调8 分钟前
Redis-不止是缓存
java·开发语言·数据库
花间相见12 分钟前
【大模型微调与部署02】—— ms-swift 自定义数据集完全教程:格式、dataset_info 配置、多格式兼容实战
开发语言·ssh·swift
Hello--_--World16 分钟前
JS:闭包、函数柯里化、工厂函数、偏函数、立即执行函数 相关知识点与面试题
开发语言·javascript·ecmascript
一只幸运猫.20 分钟前
字节跳动Java大厂面试版
java·开发语言·面试
xier_ran29 分钟前
【C++】“内部”、“外部”、“派生类”、“友元“类
java·开发语言·c++
im_AMBER37 分钟前
从面试题看JS变量提升
开发语言·前端·javascript·前端框架
故事和你9137 分钟前
洛谷-数据结构1-2-二叉树1
开发语言·数据结构·c++·算法·leetcode·动态规划·图论
大橘38 分钟前
【qml-5.1】qml与c++交互(QML_ELEMENT/QML_SINGLETON)
开发语言·c++·qt·交互·qml
凭君语未可39 分钟前
从静态代理走向动态代理:理解 JDK 动态代理的本质
java·开发语言