• 1587阅读
  • 5回复

QSharedMemory设置一个运行的实例 [复制链接]

上一主题 下一主题
离线lwei24
 

只看楼主 倒序阅读 楼主  发表于: 2020-09-25
    各位大佬,请问在项目中,只限制运行一个实例APP,于是,我通过 QSharedMemory去实现了只能运行一个实例的问题。但另一个问题是:如果APP多次运行后,能不能只弹一次提示错误的信息框,如下 代码。各位请问有什么办法实现多次运行APP,只弹一次提示信息的框呢?
    QDialog dlg;    dlg.show();    QSharedMemory appShared("test");    if(false == appShared.create(1)))    {        QMessageBox::warning(nullptr, QStringLiteral("warning"), "The app is running.");        exit(0);    }
离线lemonzll

只看该作者 1楼 发表于: 2020-09-25
最简单的方法是app启动的时候,去固定的位置读某个文件,如果没有,就创建个,如果有,就去读下文件内容,app关闭的时候把文件删除。这样,第一次启动app的时候,因为没文件,就创建了个,写个0进去,第二个app启动的时候,用qsharedmemory判断已经启动了程序了,再去读下文件,把里面的数字加一,如果数字是1就弹窗,数字不是1就退出了,后面再启动app也这种逻辑,就不可能后面再弹窗了
离线zhang2349

只看该作者 2楼 发表于: 2020-09-25
按上面罗杰  你直接写QSharedMemory里就可以
离线mugua001

只看该作者 3楼 发表于: 2020-09-25
个人觉得文件不妥,有时程序会异常中止……文件仍健在……下次这个APP就启不来了。
离线lemonzll

只看该作者 4楼 发表于: 2020-09-25
这不是还有qsharedmemory来判断程序到底起来了没有的,要是qsharedmemory判断可以启动,把那个文件写个0进去
离线kenbe

只看该作者 5楼 发表于: 2020-09-28
在sharedmemory里,把你运行的次数写进去就可以了。
快速回复
限100 字节
 
上一个 下一个