微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅运行 flutter 桌面应用程序的单个实例

如何解决仅运行 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 举报,一经查实,本站将立刻删除。