如何解决仅运行 flutter 桌面应用程序的单个实例
我正在开发 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 举报,一经查实,本站将立刻删除。