1

私が間違っていなければ、フラッターは現時点で windows の win32 ライブラリで実装されています (フラッター ウィンドウは非常に初期の開発段階にあり、いつでも変更される可能性があるため、これは .NET または他のフレームワークに変更される可能性があると一部のドキュメント ページに記載されています)。後方互換性を維持しない場合)。現在のフラッター アプリの win32 ウィンドウ ハンドルを取得する方法はありますか?

4

2 に答える 2

4
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 で定義されているフラッターのウィンドウ クラス名です。ユーザーが複数のフラッター アプリケーションを実行している場合は、一意にすることができます。

toNativeUtf8 は dart ffi の関数です。

于 2021-06-28T11:50:21.517 に答える