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

2024-03-25

我正在开发 flutter 桌面应用程序。我只想执行应用程序的单个实例。但目前它允许我运行多个实例。如何只允许该应用程序的一个 .exe 文件运行?


这是默认 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;
  }

打开 win32_window.cpp 文件并在开头添加此代码片段CreateAndShow()方法会将应用程序限制为单个实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅运行 flutter 桌面应用程序的单个实例 的相关文章

随机推荐