如果实例已在运行,请重新打开Qt桌面应用程序

时间:2017-10-06 09:40:00

标签: windows qt mutex show msdn

我会尽力解释我的问题,但我对这一切都很陌生。我有一个Windows桌面Qt应用程序。只能运行一个应用程序实例。这由main.cpp中的MSDN互斥锁句柄确保。

HANDLE mutex = CreateMutex(NULL, TRUE, lpName);

if (mutex == NULL || GetLastError() == ERROR_ALREADY_EXISTS){
    QMessageBox::information(0, "Info", "Application is already running.");
    return 0;
}

现在我想要做的是重新打开正在运行的应用程序,如果有人试图打开该应用程序。通过重新打开,我的意思是show() MainWindow此时可能隐藏(hide()方法)。我真的不知道如何实现这一目标。

2 个答案:

答案 0 :(得分:0)

查看可由多个进程(您的类的实例)访问的QSystemSemaphore。另外,本文可能会有所帮助:Inter-Process Communication in Qt

另请注意,如果没有必要,将QtWinAPI混合不是一个好主意。

答案 1 :(得分:0)

我在这里找到答案: How I show application when open application again Qt

QLocalServerQLocalSocket为我工作。