diff --git a/packages/window_manager/example/lib/pages/home.dart b/packages/window_manager/example/lib/pages/home.dart index d9149ec7..42ba6eb1 100644 --- a/packages/window_manager/example/lib/pages/home.dart +++ b/packages/window_manager/example/lib/pages/home.dart @@ -180,6 +180,14 @@ class _HomePageState extends State with TrayListener, WindowListener { print('isFocused: ${await windowManager.isFocused()}'); }, ), + if(Platform.isWindows) + PreferenceListItem( + title: const Text('getWindowHandle'), + onTap: () async { + final result = await windowManager.getWindowHandle(); + print('HWND:$result'); + }, + ), PreferenceListItem( title: const Text('show / hide'), onTap: () async { diff --git a/packages/window_manager/lib/src/window_manager.dart b/packages/window_manager/lib/src/window_manager.dart index dcfa1c8c..161d6f0c 100644 --- a/packages/window_manager/lib/src/window_manager.dart +++ b/packages/window_manager/lib/src/window_manager.dart @@ -104,6 +104,10 @@ class WindowManager { await _channel.invokeMethod('ensureInitialized'); } + Future getWindowHandle()async{ + return await _channel.invokeMethod('getWindowHandle') as int; + } + /// You can call this to remove the window frame (title bar, outline border, etc), which is basically everything except the Flutter view, also can call setTitleBarStyle(TitleBarStyle.normal) or setTitleBarStyle(TitleBarStyle.hidden) to restore it. Future setAsFrameless() async { await _channel.invokeMethod('setAsFrameless'); diff --git a/packages/window_manager/windows/window_manager_plugin.cpp b/packages/window_manager/windows/window_manager_plugin.cpp index 36e767ab..93716167 100644 --- a/packages/window_manager/windows/window_manager_plugin.cpp +++ b/packages/window_manager/windows/window_manager_plugin.cpp @@ -350,7 +350,11 @@ void WindowManagerPlugin::HandleMethodCall( window_manager->native_window = ::GetAncestor(registrar->GetView()->GetNativeWindow(), GA_ROOT); result->Success(flutter::EncodableValue(true)); - } else if (method_name.compare("waitUntilReadyToShow") == 0) { + } + else if (method_name.compare("getWindowHandle") == 0) { + result->Success(flutter::EncodableValue(reinterpret_cast<__int64>(window_manager->GetMainWindow()))); + } + else if (method_name.compare("waitUntilReadyToShow") == 0) { window_manager->WaitUntilReadyToShow(); result->Success(flutter::EncodableValue(true)); } else if (method_name.compare("setAsFrameless") == 0) {