查看完整版本: [-- QSharedMemory设置一个运行的实例 --]

QTCN开发网 -> Qt基础编程 -> QSharedMemory设置一个运行的实例 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

lwei24 2020-09-25 15:55

QSharedMemory设置一个运行的实例

    各位大佬,请问在项目中,只限制运行一个实例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 2020-09-25 17:20
最简单的方法是app启动的时候,去固定的位置读某个文件,如果没有,就创建个,如果有,就去读下文件内容,app关闭的时候把文件删除。这样,第一次启动app的时候,因为没文件,就创建了个,写个0进去,第二个app启动的时候,用qsharedmemory判断已经启动了程序了,再去读下文件,把里面的数字加一,如果数字是1就弹窗,数字不是1就退出了,后面再启动app也这种逻辑,就不可能后面再弹窗了

zhang2349 2020-09-25 18:25
按上面罗杰  你直接写QSharedMemory里就可以

mugua001 2020-09-25 20:29
个人觉得文件不妥,有时程序会异常中止……文件仍健在……下次这个APP就启不来了。

lemonzll 2020-09-25 23:30
这不是还有qsharedmemory来判断程序到底起来了没有的,要是qsharedmemory判断可以启动,把那个文件写个0进去

kenbe 2020-09-28 10:49
在sharedmemory里,把你运行的次数写进去就可以了。


查看完整版本: [-- QSharedMemory设置一个运行的实例 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled