Flutter windows: 获取 win32 window flutter 应用程序句柄
Flutter windows: get win32 window handle of flutter app
如果我没记错的话,目前 flutter 是用 win32 库实现的 windows(尽管一些文档页面指出这可能会更改为 .NET 或其他一些框架,因为 flutter windows 处于非常早期的开发阶段,可以在不保持向后兼容性的情况下随时更改)。有什么方法可以获取当前 flutter 应用程序的 win32 window 句柄吗?
是:
在当前框架API中,您可以使用[=12]从框架中获取Flutter视图(不是顶级window)的句柄=].如果你想要顶级 window,你可以使用标准 Win32 APIs 从那里向上走。
假设你使用的是FDE Windows转轮,你也可以直接在main.cpp中使用GetHandle()
获得顶级window。
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 的 window class 名称,如果用户是 运行 multiple flutter,你可以使它唯一应用程序。
toNativeUtf8 是 dart ffi 的一个函数。
如果我没记错的话,目前 flutter 是用 win32 库实现的 windows(尽管一些文档页面指出这可能会更改为 .NET 或其他一些框架,因为 flutter windows 处于非常早期的开发阶段,可以在不保持向后兼容性的情况下随时更改)。有什么方法可以获取当前 flutter 应用程序的 win32 window 句柄吗?
是:
在当前框架API中,您可以使用[=12]从框架中获取Flutter视图(不是顶级window)的句柄=].如果你想要顶级 window,你可以使用标准 Win32 APIs 从那里向上走。
假设你使用的是FDE Windows转轮,你也可以直接在main.cpp中使用
GetHandle()
获得顶级window。
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 的 window class 名称,如果用户是 运行 multiple flutter,你可以使它唯一应用程序。
toNativeUtf8 是 dart ffi 的一个函数。