【问题标题】:Flutter windows: get win32 window handle of flutter appFlutter windows:获取flutter app的win32窗口句柄
【发布时间】:2020-04-13 11:44:06
【问题描述】:

如果我没记错的话,flutter 目前是通过 windows 的 win32 库实现的(尽管一些文档页面指出这可能会更改为 .NET 或其他一些框架,因为 Flutter windows 处于非常早期的开发阶段并且可能随时更改而不保持向后兼容性)。有没有办法获取当前flutter应用的win32窗口句柄?

【问题讨论】:

    标签: flutter flutter-desktop


    【解决方案1】:

    是的:

    • 在当前框架 API 中,您可以使用 GetNativeWindow() 从框架中获取 Flutter 视图(不是顶级窗口)的句柄。如果您想要顶级窗口,您可以使用标准 Win32 API 从那里向上走。

    • 假设您使用的是 FDE Windows 运行器,您还可以使用 GetHandle() 直接在 main.cpp 中获取顶级窗口。

    【讨论】:

      【解决方案2】:
      static final _user32 = DynamicLibrary.open('user32.dll');
      
      static final findWindowA = _user32.lookupFunction<
            Int32 Function(Pointer<Utf8> _lpClassName, Pointer<Utf8> _lpWindowName),
            int Function(Pointer<Utf8> _lpClassName,
                Pointer<Utf8> _lpWindowName)>('FindWindowA');
      
      int hWnd = findWindowA('FLUTTER_RUNNER_WIN32_WINDOW'.toNativeUtf8(), nullptr);
      print(hWnd);
      

      'FLUTTER_RUNNER_WIN32_WINDOW'是在windows/runner/win32_window.cpp中定义的flutter的窗口类名,你可以让它唯一,以防用户运行多个flutter应用程序。

      toNativeUtf8 是 dart ffi 中的一个函数。

      【讨论】:

        猜你喜欢
        • 2010-09-05
        • 1970-01-01
        • 1970-01-01
        • 2012-11-22
        • 2015-02-17
        • 2011-02-26
        • 1970-01-01
        • 2014-01-28
        • 1970-01-01
        相关资源
        最近更新 更多