網(wǎng)站美化福州外包seo公司
????????最近做一個(gè)小功能,需要后臺運(yùn)行QT程序,無彈窗,并且只允許一個(gè)exe運(yùn)行,不關(guān)閉程序,無法2次啟動(dòng)。
main.cpp
#include "deleteshotcurveflie.h"
#include <QApplication>
#include <QSharedMemory>
#include <QMessageBox>int main(int argc, char *argv[])
{QApplication a(argc, argv);DeleteShotCurveFlie w;// 創(chuàng)建一個(gè)QSharedMemory對象來檢查是否已經(jīng)存在實(shí)例QSharedMemory sharedMemory("UniqueApplicationName");// 嘗試附加到共享內(nèi)存段if (!sharedMemory.attach()){// 如果無法附加,說明這是第一個(gè)實(shí)例sharedMemory.create(1); // 創(chuàng)建一個(gè)1字節(jié)的共享內(nèi)存段// 創(chuàng)建并顯示主窗口w.show();w.hide();// 開始事件循環(huán)int ret = a.exec();// 程序退出時(shí)釋放共享內(nèi)存sharedMemory.detach();return ret;}else{// 如果已經(jīng)附加到共享內(nèi)存,說明已經(jīng)有實(shí)例在運(yùn)行QMessageBox::information(nullptr, "程序運(yùn)行中", "該程序已經(jīng)在運(yùn)行中,不能打開第二個(gè)窗口。");w.raise();return 0;}}
deleteshotcurveflie.cpp
#include "deleteshotcurveflie.h"
#include <QFileSystemWatcher>
#include <QDir>
#include <QDebug>DeleteShotCurveFlie::DeleteShotCurveFlie(QWidget *parent): QWidget(parent)
{this->setMaximumSize(1,1);//設(shè)置為最小this->setWindowFlags(Qt::FramelessWindowHint);//窗口無邊框化
}