Qt 防止exe被重复打开

来源:互联网 发布:算法导论中文版答案 编辑:程序博客网 时间:2024/06/05 14:58

#include <QApplication>
#include <QSystemSemaphore>
#include <QSharedMemory>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSystemSemaphore semaphore("ProgramKey",1, QSystemSemaphore::Open);
    semaphore.acquire();
    //在临界区操作共享内存SharedMemory
    QSharedMemory memory("Program");//全局对象名
    if(!memory.create(1)) //如果全局对象存在则提示退出
    {
       QMessageBox::information(0, "Tip", "Program hasbeen running!");
       semaphore.release();
        return 0;
    }
    semaphore.release();

    Widget w;
    w.show();

    return a.exec();
}