Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如果实例已在运行,请重新打开Qt桌面应用程序_Windows_Qt_Mutex_Show_Msdn - Fatal编程技术网

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

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

检查哪些可以被多个进程(类的实例)访问。此外,本文可能会有所帮助:

还请注意,当不需要时,将
Qt
WinAPI
混合使用不是一个好主意。

检查可由多个进程(类的实例)访问的。此外,本文可能会有所帮助:

还请注意,在没有必要时,将
Qt
WinAPI
混合使用不是一个好主意。

我在这里找到了答案:

QLocalServer
QLocalSocket
对我有效。

我在这里找到了答案:


QLocalServer
QLocalSocket
为我工作。

首先,您将Qt与WinAPI混合在一起。你是想用Qt方式还是WinAPI方式来做这件事?看这个:@jaskmar没有太多的经验,我很难说我想用哪种方式来做。我不知道如何做到这一点,也不知道是否可以实现这两种方式。我想查找应用程序的实例必须由WinAPI完成,但通过Qt显示窗口?首先,您将Qt与WinAPI混合在一起。你是想用Qt方式还是WinAPI方式来做这件事?看这个:@jaskmar没有太多的经验,我很难说我想用哪种方式来做。我不知道如何做到这一点,也不知道是否可以实现这两种方式。我想查找应用程序的实例必须由WinAPI完成,但通过Qt显示窗口?