Dev*_*v94 12 dart flutter-desktop
我正在开发 flutter 桌面应用程序。我只想执行应用程序的单个实例。但目前它允许我运行多个实例。如何只允许该应用程序的一个 .exe 文件运行?
Dev*_*v94 13
这是默认 flutter windows 应用程序属性中的自定义,因此我们必须为此目的使用 C++ 进行编码。可以使用互斥锁来实现单窗口应用程序实例:
HANDLE hMutexHandle=CreateMutex(NULL, TRUE, L"my.mutex.name");
HWND handle=FindWindowA(NULL, "Test Application");
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
WINDOWPLACEMENT place = { sizeof(WINDOWPLACEMENT) };
GetWindowPlacement(handle, &place);
switch(place.showCmd)
{
case SW_SHOWMAXIMIZED:
ShowWindow(handle, SW_SHOWMAXIMIZED);
break;
case SW_SHOWMINIMIZED:
ShowWindow(handle, SW_RESTORE);
break;
default:
ShowWindow(handle, SW_NORMAL);
break;
}
SetWindowPos(0, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
SetForegroundWindow(handle);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打开 win32_window.cpp 文件并在方法的开头添加此代码片段CreateAndShow()会将应用程序限制为单个实例。