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

Reopen a Qt desktop app if an instance is already running

我会尽力解释我的问题,但我对这一切都很陌生。我有一个 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() 此时可能被隐藏(通过 hide() 方法)的 MainWindow。我真的不知道这是如何实现的。

查看 QSystemSemaphore which could be accessed by multiple processes (instances of your class). Also this article might be helpful: Inter-Process Communication in Qt

另请注意,在没有必要的情况下,将 QtWinAPI 混合使用并不是一个好主意。

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

QLocalServerQLocalSocket 对我有用。