仅运行 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 (将#修改为@)