Windows 如果实例已在运行,请重新打开Qt桌面应用程序
我会尽力解释我的问题,但我对这一切都很陌生。我有一个Windows桌面Qt应用程序。只能有一个应用程序实例正在运行。这由Windows 如果实例已在运行,请重新打开Qt桌面应用程序,windows,qt,mutex,show,msdn,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 al
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()
此时可能被隐藏的main窗口
(通过hide()
方法)。我真的不知道如何才能做到这一点。检查哪些可以被多个进程(类的实例)访问。此外,本文可能会有所帮助:
还请注意,当不需要时,将Qt
与WinAPI
混合使用不是一个好主意。检查可由多个进程(类的实例)访问的。此外,本文可能会有所帮助:
还请注意,在没有必要时,将Qt
与WinAPI
混合使用不是一个好主意。我在这里找到了答案:
QLocalServer
和QLocalSocket
对我有效。我在这里找到了答案:
QLocalServer
和QLocalSocket
为我工作。首先,您将Qt与WinAPI混合在一起。你是想用Qt方式还是WinAPI方式来做这件事?看这个:@jaskmar没有太多的经验,我很难说我想用哪种方式来做。我不知道如何做到这一点,也不知道是否可以实现这两种方式。我想查找应用程序的实例必须由WinAPI完成,但通过Qt显示窗口?首先,您将Qt与WinAPI混合在一起。你是想用Qt方式还是WinAPI方式来做这件事?看这个:@jaskmar没有太多的经验,我很难说我想用哪种方式来做。我不知道如何做到这一点,也不知道是否可以实现这两种方式。我想查找应用程序的实例必须由WinAPI完成,但通过Qt显示窗口?