问题描述
我正在开发 Flutter 桌面应用程序。我只想执行应用程序的单个实例。但目前它允许我运行多个实例。如何只允许此应用程序的一个 .exe 文件运行?
花了一些时间后,我找到了解决方案。这是默认 Flutter windows 应用程序属性中的自定义,因此我们必须为此目的使用 C++ 进行编码。使用Mutex可以实现单窗口应用实例
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,SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
SetForegroundWindow(handle);
return 0;
}
打开 win32_window.cpp 文件并在 CreateAndShow() 方法的开头添加此代码段将限制应用程序的单个实例。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)